?? uniform3b.m
字號:
%============均勻三次B樣條曲線插值===========
%定義變量:
%X:原始資料,d:控制頂點
%n:數據條數,k:B樣條的次數
%/*======Copyright@時光牧者( http://hi.baidu.com/junus ).==========*/
%/*======Email: firt123@163.com ==============================*/
clc,clear;
figure;
X=load('data2.txt');
n=length(X); %得數據維數;
%A:方程系數-----------------------------
A=zeros(n+2);
A(1,1)=1;A(1,2)=-2;A(1,3)=1;
A(n+2,n)=1;A(n+2,n+1)=-2;A(n+2,n+2)=1;
for i=2:(n+1)
A(i,i-1)=1;
A(i,i)=4;
A(i,i+1)=1;
end
%e:方程右邊.得到的控制點首尾與插值數據相同.且與控制首末連線相切
e=[0,0];
e(n+2,:)=[0,0];
for i=2:n+1
e(i,:)=6*X(i-1,:);
end
%得到控制點,
d=inv(A)*e;
%畫出圖形
hold on
%原始數據,紅色,點
plot(X(:,1),X(:,2),'r');
%控制多邊形,藍色,線
% figure
% plot(d(:,1),d(:,2),'b');
% figure
%插值B樣條曲線
uu=(0:0.01:1);
x=0;y=0;
for j=1:(n-1)
for kk=1:length(uu)
x(kk)=d(j,1)*Nfun(0,uu(kk))+d(j+1,1)*Nfun(1,uu(kk))+d(j+2,1)*Nfun(2,uu(kk))+d(j+3,1)*Nfun(3,uu(kk));
y(kk)=d(j,2)*Nfun(0,uu(kk))+d(j+1,2)*Nfun(1,uu(kk))+d(j+2,2)*Nfun(2,uu(kk))+d(j+3,2)*Nfun(3,uu(kk));
end
plot(x,y,'g');
end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -