如何实现这个控制程序呢
我想要提取按X扫描,提取出所有坐标点的三维坐标,代码如下:for x=linspace(-2,5,100);
for y=linspace(-3,4,200);
z=x.^2+y.^2;
xyz=';
end
end
save fan.xls xyz -ascii;
发现结果只有:5 4 41,不知道为什么别的数没有提取出来呀,我用C语言很容易就提出来了,一个二重循环,可是MATLAB为什么就提取不出来呢?当X取一个值时,就对应着两百个Y和Z,然后X递增,再对应着两百个Y和Z,不知道为什么不对呢,大家帮我想想呀!不甚感激! 你现在的程序逻辑有问题,xyz只记录下了最后一个循环结果,当然和你想象的不一样。
回复 沙发 sogooda 的帖子
你能帮我想想怎么记录全部数据吗?谢谢呀!我想不出如何控制! 每对应一个x就有一串y z然后再放入一个矩阵里,不适合 matalab是以矩阵为基的
而你输出的部分很可能只是矩阵的一行
也就是说在你取一个x值的时候,可能有一堆Y、Z值让你随机的选取
个人意见,请不要拍砖 1.这里面不需要用循环;
2. x=linspace(-2,5,100);
y=linspace(-3,4,200);
=meshgrid(x,y);
Z=X.^2+Y.^2;
abc=);reshape(Y,1,[]);reshape(Z,1,[])]; 晕倒,前面不是有这个帖子了么?
回复 7楼 wwbeyondww 的帖子
不是呀,前面大家讨论的结果,我发现提取的坐标,只是把把X分成了一百个点,Y分面了两百个点,而没有对于X扫描提取!提取的点只是其中一部分!
回复 6楼 wwbeyondww 的帖子
谢谢楼上!真的很感谢你!对了,假如这个曲面,我用一个圆柱如:(z-5).^2+y.^2=25去截,想提取被截取的那部分的三维坐标点,楼主能帮我想想怎么提取吗?谢谢!我提取出来后NaN始终在里面,我按照你的意思写的代码如下,你看对吗:x=linspace(-2,5,100);
y=linspace(-3,4,200);
=meshgrid(x,y);
Z=X.^2+Y.^2;
ii=find((Z-5).^2+Y.^2>25);
Z(ii)=NaN;Y(ii)=NaN;X(ii)=NaN;
abc=);reshape(Y,1,[]);reshape(Z,1,[])]';
save fan.xls abc -ascii;
你帮我看看,这样提取对吗?我感觉应该对,但提取出来后,怎么才能删除掉没有用的NaN呢!
[ 本帖最后由 fanzhenjie 于 2008-9-2 08:14 编辑 ]
回复 9楼 fanzhenjie 的帖子
我很好奇你提取出来的那也是一个方方正正的矩阵
但是,圆形怎么可能会方呢
把圆形放如方的矩阵里?
回复 10楼 sigma665 的帖子
我意思就是说,假如我得到一个曲面,再用一个圆柱去截它,只要提取出来被圆柱包围部份的曲面的三维坐标点,楼主能帮我想想怎么提取吗?我提取出来后里面的NaN怎么才能删除呀?回复 11楼 fanzhenjie 的帖子
Z(ii)=[];Y(ii)=[];X(ii)=[];这样试试
回复 12楼 sigma665 的帖子
用[]确实删除了没有用的NAN,但其实我有一个画图的命令在里面,就不能画图了,错误提示的破坏了矩阵的维数,如果我用NAN就能画出图来,但提取出来的点吧,里面有NAN,别的点都是我想要的,用[]就只提取了我最需要的点,可是图就不能画了!呵呵,能不能有一个更好的办法呢? 那你就把程序复制一下,分成两个程序,一个程序用来画图,一个程序用来提取点:lol回复 14楼 messenger 的帖子
好主意,呵呵!
页:
[1]