?interpolate pts on contour of MatLab

看板Programming作者時間18年前 (2007/12/29 18:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
我打算在給定的封閉曲線額外加點 於是寫了下列程式 但是我讀取進來的資料點似乎有重複的點 不知如何偵測並消除? 或者有否更好的方式達到同樣目的: 在給定的封閉曲線額外加點? 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   --
文章代碼(AID): #17TY8Y00 (Programming)
文章代碼(AID): #17TY8Y00 (Programming)