看板Programming
标 题?interpolate pts on contour of MatLab
发信站KKCITY (Sat Dec 29 18:12:07 2007)
转信站ptt!ctu-reader!ctu-gate!news.nctu!news.ntu!news.au!zoonews.ee.ntu!news
我打算在给定的封闭曲线额外加点 於是写了下列程式
但是我读取进来的资料点似乎有重复的点 不知如何侦测并消除?
或者有否更好的方式达到同样目的: 在给定的封闭曲线额外加点?
by Cheng Cosine
Dec/29/2k7 NC
function p = interpContour(p0, Noi)
% =======================================================================
% determikne geometric center of the contour
No = size(p0,2);
gc(1) = sum(p0(1,:))/No;
gc(2) = sum(p0(2,:))/No;
% =======================================================================
% convert coordinates from rectangular to polar coordinates system
pp = zeros(size(p0));
% angles
pp(1,:) = atan2(p0(2,:),p0(1,:));
% radius
pp(2,:) = sqrt( ( p0(1,:)-gc(1) ).^2 ...
+( p0(2,:)-gc(2) ).^2 );
% sort according to angles; from small to large
[pp(1,:), Indx] = sort(pp(1,:));
pp(2,:) = pp(2,Indx);
% =======================================================================
% Interpolate to get points in uniform angles
p1 = zeros(2, Noi);
p1(1,:) = linspace(-pi, pi, Noi);
p1(2,:) = spline(pp(1,:), pp(2,:), p1(1,:));
% =======================================================================
% convert coordinates from polar to rectangular coordinates system
p = zeros(size(p0));
p(1,:) = pp(2,:).*cos(pp(1,:));
p(2,:) = pp(2,:).*cos(pp(2,:));
错误讯息:
??? Error using ==> spline
The data abscissae should be distinct.
Error in ==> C:\Workfile\Project17\FemLab\MFile\BuildObj\ver00\interpContour.m
On line 29 ==> p1(2,:) = spline(pp(1,:), pp(2,:), p1(1,:));
--
┌─────◆KKCITY◆─────┐ ◢
◤ ★ 线上音乐新震撼 ★ ◢
◤
│ bbs.kkcity.com.tw │ ^_^ / 随选随播免等待 KKBOX◤ ^_^ /
└──《From:71.77.15.24
》──┘ ◤ http://www.kkbox.com.tw ◤
--