怎样根据选定的点画成闭合曲线?
怎样根据选定的点画成没有闭合的曲线和闭合曲线? 原帖由 hanwangabc 于 2008-6-11 16:01 发表 http://www.chinavib.com/forum/images/common/back.gif怎样根据选定的点画成没有闭合的曲线和闭合曲线?
没有看明白LZ的问题的意思 是不是想这样?
比如:
t=-10:0.1:10;
f=sin(t);
plot(,); 没那么简单。
http://www.simwe.com/forum/thread-539094-1-1.html
PS:今天看到其他版贴了Simwe的链接被某奇人鉴定为“100%做广告”,不可思议+目瞪口呆之余,我也先申明一下:这里贴链接的原因是里面言论太多,代码太多,懒得转。另外,simwe的MATLAB版也不需要在任何论坛做广告。 有时候确实很难划定界限...... 就是用户在图像上选几个点,然后把这几个点连成闭合曲线。
我试验一下,用matlab帮助里的代码,使用ginput(),可以返回坐标值,然后用样条函数spline,把点连成线,但是要想闭合还得在第一个点上选一下。,代码如下:
hold on
xy = [];
n = 0;
%左键选点
%右键选最后一个点
bt = 1;
while bt == 1
= ginput(1);
plot(xi,yi,'r.')
n = n+1;
xy(:,n) = ;
end
t = 1:n;
ts = 1: 0.1: n;
xys = spline(t,xy,ts);
plot(xys(1,:),xys(2,:),'b-');
hold off
坐标值就存在xy()里面,怎样把它写进文本? 原帖由 hanwangabc 于 2008-6-12 14:52 发表 http://www.chinavib.com/forum/images/common/back.gif
就是用户在图像上选几个点,然后把这几个点连成闭合曲线。
我试验一下,用matlab帮助里的代码,使用ginput(),可以返回坐标值,然后用样条函数spline,把点连成线,但是要想闭合还得在第一个点上选一下。,代码如下: ...
坐标值写进文本可以参考此帖:
http://www.chinavib.com/forum/viewthread.php?tid=45622&extra=page%3D1%26amp%3Bfilter%3Ddigest
LZ的程序要实现最后一个点和第一个点重合好像有点困难,是不是可以修改一下?
[ 本帖最后由 ch_j1985 于 2008-6-12 15:08 编辑 ] 是不是这个意思?
hold on
xy = [];
n = 0;
%左键选点
%右键选最后一个点
bt = 1;
while bt == 1
= ginput(1);
plot(xi,yi,'r.')
n = n+1;
xy(:,n) = ;
end
xy(:,n+1)=;
t = 1:n+1;
ts = 1: 0.1: n+1;
xys = spline(t,xy,ts);
plot(xys(1,:),xys(2,:),'b-');
hold off 实际结果我在matlab中试验是:
141 126 127 149
106 113 137 129
我用save xy.txt xy -ascii;保存后,打开xy.txt是这样的,
1.4100000e+0021.2600000e+0021.2700000e+0021.4900000e+002
1.0600000e+0021.1300000e+0021.3700000e+0021.2900000e+002
有没有什么办法保存成
141 126 127 149
106 113 137 129这样?
回复 8楼 的帖子
太谢谢你了,刚才发错了,原来是循环。[ 本帖最后由 hanwangabc 于 2008-6-12 16:00 编辑 ] 原帖由 hanwangabc 于 2008-6-12 15:47 发表 http://www.chinavib.com/forum/images/common/back.gif
实际结果我在matlab中试验是:
141 126 127 149
106 113 137 129
我用save xy.txt xy -ascii;保存后,打开xy.txt是这样的,
1.4100000e+0021.2600000e+0021.2700000e+0021.490 ...
是不是这个:
hold on
clc
clear
xy = [];
n = 0;
%左键选点
%右键选最后一个点
bt = 1;
while bt == 1
= ginput(1);
plot(xi,yi,'r.')
n = n+1;
xy(:,n) = ;
end
xy(:,n+1) = xy(:,1);
t = 1:n+1;
ts = 1: 0.1: n+1;
xys = spline(t,xy,ts);
plot(xys(1,:),xys(2,:),'b-');
hold off
fid=fopen('data.txt','w');
for k1=1:2
for k2=1:n+1
fprintf(fid,'%f',xy(k1,k2));
end
fprintf(fid,'\n');
end
fclose(fid);
原帖由 hanwangabc 于 2008-6-12 15:55 发表 http://www.chinavib.com/forum/images/common/back.gif
太谢谢你了,我看不懂这里:
xy(:,n+1)=;
t = 1:n+1;
ts = 1: 0.1: n+1;
代码的意思是将第一个点的坐标值赋给最后一个点,这样右击的那个点算是倒数第二个点了,而不是最后一个了
xy(:,n+1)=;
个人觉得应该改为xy(:,n+1)=;
不过也不影响画图
回复 11楼 的帖子
data.txt数据有点乱,没有自动换行,就像原本是141 126 127 149
106 113 137 129
里面就是
141 126 127 149 106
113 137 129 原帖由 hanwangabc 于 2008-6-12 16:10 发表 http://www.chinavib.com/forum/images/common/back.gif
data.txt数据有点乱,没有自动换行,就像原本是
141 126 127 149
106 113 137 129
里面就是
141 126 127 149 106
113 137 129
下图中两个黑色的点就表示换行
保存为其它格式的文件试试看
回复 14楼 的帖子
我用这个解决了dlmwrite('myfile1.txt', xy, 'precision', '%.0f', 'newline', 'pc');结果如下:
146,148,141,125,123,128,135,146
155,170,174,167,158,152,150,155
论坛怎么发图片啊?我本来想把结果切图贴上的。
页:
[1]
2