声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 918|回复: 14

[综合讨论] 如何实现这个控制程序呢

[复制链接]
发表于 2008-8-31 23:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我想要提取按X扫描,提取出所有坐标点的三维坐标,代码如下:
for x=linspace(-2,5,100);
    for y=linspace(-3,4,200);
        z=x.^2+y.^2;
        xyz=[x;y;z]';
    end
end
save fan.xls xyz -ascii;
发现结果只有:5 4 41,不知道为什么别的数没有提取出来呀,我用C语言很容易就提出来了,一个二重循环,可是MATLAB为什么就提取不出来呢?当X取一个值时,就对应着两百个Y和Z,然后X递增,再对应着两百个Y和Z,不知道为什么不对呢,大家帮我想想呀!不甚感激!
回复
分享到:

使用道具 举报

发表于 2008-9-1 08:41 | 显示全部楼层
你现在的程序逻辑有问题,xyz只记录下了最后一个循环结果,当然和你想象的不一样。
 楼主| 发表于 2008-9-1 16:56 | 显示全部楼层

回复 沙发 sogooda 的帖子

你能帮我想想怎么记录全部数据吗?谢谢呀!我想不出如何控制!
发表于 2008-9-1 18:33 | 显示全部楼层
每对应一个x就有一串y z
然后再放入一个矩阵里,不适合
发表于 2008-9-1 18:39 | 显示全部楼层
matalab是以矩阵为基的
而你输出的部分很可能只是矩阵的一行
也就是说在你取一个x值的时候,可能有一堆Y、Z值让你随机的选取
个人意见,请不要拍砖
发表于 2008-9-1 18:39 | 显示全部楼层
1.这里面不需要用循环;
2. x=linspace(-2,5,100);
   y=linspace(-3,4,200);
  [X,Y]=meshgrid(x,y);
Z=X.^2+Y.^2;
abc=[reshape(X,1,[]);reshape(Y,1,[]);reshape(Z,1,[])];

评分

1

查看全部评分

发表于 2008-9-1 18:45 | 显示全部楼层
晕倒,前面不是有这个帖子了么?
 楼主| 发表于 2008-9-2 07:39 | 显示全部楼层

回复 7楼 wwbeyondww 的帖子

不是呀,前面大家讨论的结果,我发现提取的坐标,只是把把X分成了一百个点,Y分面了两百个点,而没有对于X扫描提取!
提取的点只是其中一部分!
 楼主| 发表于 2008-9-2 08:10 | 显示全部楼层

回复 6楼 wwbeyondww 的帖子

谢谢楼上!真的很感谢你!对了,假如这个曲面,我用一个圆柱如:(z-5).^2+y.^2=25去截,想提取被截取的那部分的三维坐标点,楼主能帮我想想怎么提取吗?谢谢!我提取出来后NaN始终在里面,我按照你的意思写的代码如下,你看对吗:
x=linspace(-2,5,100);
y=linspace(-3,4,200);
  [X,Y]=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(X,1,[]);reshape(Y,1,[]);reshape(Z,1,[])]';
save fan.xls abc -ascii;
你帮我看看,这样提取对吗?我感觉应该对,但提取出来后,怎么才能删除掉没有用的NaN呢!

[ 本帖最后由 fanzhenjie 于 2008-9-2 08:14 编辑 ]
发表于 2008-9-2 13:31 | 显示全部楼层

回复 9楼 fanzhenjie 的帖子

我很好奇
你提取出来的那也是一个方方正正的矩阵
但是,圆形怎么可能会方呢
把圆形放如方的矩阵里?
 楼主| 发表于 2008-9-2 17:35 | 显示全部楼层

回复 10楼 sigma665 的帖子

我意思就是说,假如我得到一个曲面,再用一个圆柱去截它,只要提取出来被圆柱包围部份的曲面的三维坐标点,楼主能帮我想想怎么提取吗?我提取出来后里面的NaN怎么才能删除呀?
发表于 2008-9-2 17:45 | 显示全部楼层

回复 11楼 fanzhenjie 的帖子

Z(ii)=[];Y(ii)=[];X(ii)=[];
这样试试
 楼主| 发表于 2008-9-2 22:44 | 显示全部楼层

回复 12楼 sigma665 的帖子

用[]确实删除了没有用的NAN,但其实我有一个画图的命令在里面,就不能画图了,错误提示的破坏了矩阵的维数,如果我用NAN就能画出图来,但提取出来的点吧,里面有NAN,别的点都是我想要的,用[]就只提取了我最需要的点,可是图就不能画了!呵呵,能不能有一个更好的办法呢?
发表于 2008-9-2 22:58 | 显示全部楼层
那你就把程序复制一下,分成两个程序,一个程序用来画图,一个程序用来提取点:lol

评分

1

查看全部评分

 楼主| 发表于 2008-9-2 23:45 | 显示全部楼层

回复 14楼 messenger 的帖子

好主意,呵呵!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-23 05:30 , Processed in 0.055055 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表