⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 splineq.m

📁 一些制作正交曲线网格的matlab源程序
💻 M
字号:
function [ti, pp] = splineq(t, z, nPoints, theSlopeFlag)% splineq -- Equally-spaced spline interpolation.%  [ti, pp] = splineq(t, z, nPoints, theSlopeFlag) interpolates%   complex z(t) at nPoints equally spaced along the track of%   the spline curve, including the first and last points.  The%   returned ti and pp are such that ppval(pp, ti) will provide%   the actual equally-spaced values.  If theSlopeFlag is TRUE,%   the end-slopes of the spline are pinned to the linear trend%   between the first two and the last two points, respectively.%  zi = splineq(t, z, nPoints, theSlopeFlag) returns the actual%  interpolated values.%  [ti, pp] = splineq(t, z, ti, theSlopeFlag) interpolates the%  z(t) curve at the relative positions [0...1] along the%  length of the curve, given by ti.% zi = splineq(t, z, ti, theSlopeFlag) returns the actual%  interpolated values.% splineq(m, n) demonstrates itself with m random data points,%  interpolated at n positions (default = 10*m), using pinned%  slopes.  Click on the curve to do another demonstration.%  The "zoomsafe" facility is invoked if available.% spline('demo') calls "spline(5, 50)". % Copyright (C) 1999 Dr. Charles R. Denham, ZYDECO.%  All Rights Reserved.%   Disclosure without explicit written consent from the%    copyright owner does not constitute publication. % Version of 26-May-1999 15:37:29.% Updated    31-Aug-1999 13:45:25.if nargin < 1, help(mfilename), t = 'demo'; endif isequal(t, 'demo'), t = 5; endif ischar(t), t = eval(t); endif length(t) == 1	m = t;	n = 10*m;	if nargin > 1, n = z; end	if ischar(n), n = eval(n); end	x = sort(rand(1, m));	x = x - min(x);	x = x / max(x);	y = rand(size(x));	z = x + sqrt(-1)*y;	t = linspace(min(x), max(x), m);	flag = 1;	if (1)		[tti, pp] = feval(mfilename, t, z, n, flag);	else   % Random interpolates.		r = sort(rand(1, n));		r(1) = 0; r(end) = 1;		[tti, pp] = feval(mfilename, t, z, r, flag);	end	zzi = ppval(pp, tti);	xxi = real(zzi); yyi = imag(zzi);	h = plot(x, y, 'r*', xxi, yyi, 'bo-');	legend(h, 'data', 'interp')	theBDF = [mfilename '(' int2str(m) ', ' int2str(n) ')'];	set(h, 'ButtonDownFcn', theBDF)	title(theBDF), xlabel('x'), ylabel('y')	axis equal	eval('zoomsafe', ' ')	figure(gcf)	set(gcf, 'Name', 'SplineQ Demo')	returnendif nargin < 2, help(mfilename), return, endif nargin < 3, nPoints = 10 * length(z); endif nargin < 4, theSlopeFlag = 0; end[oldm, n] = size(z);if oldm == 1, z = z(:); endt = t(:);multiplier = 10;len = length(nPoints);if len < 2	ttemp = linspace(min(t), max(t), multiplier*nPoints+1).';	di = linspace(0, 1, nPoints);else	ttemp = linspace(min(t), max(t), multiplier*len+1).';	di = nPoints;endif theSlopeFlag	slope = diff(z) ./ diff(t);	z = [slope(1); z; slope(end)];endpp = spline(t, z);ztemp = ppval(pp, ttemp);d = [0; cumsum(abs(diff(ztemp)))];d = d - min(d);d = d / max(d);ti = spline(d, ttemp, di);if oldm == 1, ti = ti.'; endif nargout < 2	ti = ppval(pp, ti);end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -