注册 登录
编程论坛 Matlab

求助:如何实现空间曲线拟合

Carol_luo 发布于 2007-09-05 21:22, 8150 次点击

试验测得一组数据(如附件所示):

X=[96 97 103 105 106 112 116 123 128 137 140 147 149 155 156 191 214 232]
Y=[73 78 92 91 81 96 102 106 108 120 122 122 126 137 137 178 199 220]
Z=[65 64 74 82 74 81 91 96 108 113 120 122 120 125 131 185 206 220]

求一空间直线,使各点到该直线的距离最小,并画出该直线。
不甚感激!

只有本站会员才能查看附件,请 登录

[此贴子已经被作者于2007-9-9 10:19:18编辑过]

10 回复
#2
ydgsl2007-09-07 17:35
clear,clc
x=load('data.txt');% 按转置格式村数据。
n=size(x,1);
str=num2str([1:n]');
figure(1),% original data
plot3(x(:,1),x(:,2),x(:,3),'o')
stem3(x(:,1),x(:,2),x(:,3),'filled')
text(x(:,1),x(:,2),x(:,3),str,'fontsize',12)
g=princomp(x);
x2=x*g';
x2(:,2)=-1.25*x2(:,2);
figure(2),% transformed data
plot3(x2(:,1),x2(:,2),x2(:,3),'o')
stem3(x2(:,1),x2(:,2),x2(:,3),'filled')
text(x2(:,1),x2(:,2),x2(:,3),str,'fontsize',12)
x3(1,:)=x2(1,:);
x3(2,:)=x2(n,:);
hold on
plot3(x3(:,1),x3(:,2),x3(:,3),'r-','linewidth',3)

#3
jiangbiao662007-09-08 12:39
太厉害了!
#4
Carol_luo2007-09-08 14:58
非常感谢ydgsl,请教一下“x2(:,2)=-1.25*x2(:,2);”乘以-1.25的理由是什么?
#5
ydgsl2007-09-08 15:31
主成分转换后的数据尺度尽可能与原数据尺度一致,对其x2轴长度作一定调整(仍有些不太到位)。
#6
Carol_luo2007-09-08 16:25

ydgsl,还有一个问题请教你:
当我换一组数据时,如:
X=[67 106 122 128 134 138 141 145 149 194 205 217 226 229]
Y=[69 108 122 126 136 140 141 147 149 195 206 218 227 229]
Z=[66 105 122 127 136 139 141 146 149 197 208 218 227 229]
运行结果就不行了,x2(:,2),x2(:,3)都是负值,画出来的图形如附件所示。
上面你说到的调整系数应该如何选择呢?这是一个系列实验,有很多不同的实验数据。
谢谢!

只有本站会员才能查看附件,请 登录

#7
ydgsl2007-09-09 07:21
clear,clc
x=[67 106 122 128 134 138 141 145 149 194 205 217 226 229;...
69 108 122 126 136 140 141 147 149 195 206 218 227 229;...
66 105 122 127 136 139 141 146 149 197 208 218 227 229]
x=x';
n=size(x,1);
str=num2str([1:n]');
figure(1),% original data
plot3(x(:,1),x(:,2),x(:,3),'o')
stem3(x(:,1),x(:,2),x(:,3),'filled')
text(x(:,1),x(:,2),x(:,3),str,'fontsize',12)
g=princomp(x);
x2=x*g';
figure(2)
x2(:,3)=-x2(:,3);
plot3(x2(:,1),x2(:,2),x2(:,3),'o')
stem3(x2(:,1),x2(:,2),x2(:,3),'filled')
text(x2(:,1),x2(:,2),x2(:,3),str,'fontsize',12)
x3(1,:)=x2(1,:);
x3(2,:)=x2(n,:);
hold on
plot3(x3(:,1),x3(:,2),x3(:,3),'r-','linewidth',3)
#8
haihe3982008-12-05 19:33
学习!!我也在搞时空的曲线拟合@还请以后多帮助
#9
xuedoudou2009-07-29 15:45
请问高手,Matlab能否进行二维曲线拟和.实验测得数组力(F)位移(x)和电流(i),想拟和出曲线F=G(x,i),并得到曲线的方程。谢谢
#10
zrqh2012-06-10 23:38
很好,但如果想拟合成空间曲线而非直线的话怎么弄呢?
#11
上山的对2015-03-14 15:58
您好,请问Matlab可以实现空间曲线拟合成一小段一小段直线吗?
1