?interpolate pts on contour of MatLab
我打算在給定的封閉曲線額外加點 於是寫了下列程式
但是我讀取進來的資料點似乎有重複的點 不知如何偵測並消除?
或者有否更好的方式達到同樣目的: 在給定的封閉曲線額外加點?
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 ◤
--
Programming 近期熱門文章
PTT數位生活區 即時熱門文章