返回信息流等啊等 。。。
这是一条镜像帖。来源:北邮人论坛 / matlab / #6645同步于 2010/4/8
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Matlab机器人发帖
Re: 【急~】matlab中find函数的应用报错
Lynn00945
2010/4/8镜像同步9 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
smld是多少行多少列多少维的矩阵?没理解为什么[i j]=find(y==smld(t));中smld(t),假如说smld(t)也是和y一样大小的矩阵,那肯定不会出错
smld是1*10的矩阵
。。。。实在很纠结
就卡在这里进行不下去。。。
谢谢啦~~~~
【 在 MarchFeng 的大作中提到: 】
: smld是多少行多少列多少维的矩阵?没理解为什么[i j]=find(y==smld(t));中smld(t),假如说smld(t)也是和y一样大小的矩阵,那肯定不会出错
【 在 Lynn00945 的大作中提到: 】
: for t=1:10
: [i j]=find(y==smld(t));
: phi=b1(1,max(j));
: ...................
我y=floor(abs(100*randn(161,161)));然后随便写了一个smld;但是i和j并不像你所说的是空的
你程序中主要是因为for的十次循环中,有些是y中的元素不等于smld中的,执行到这一步的时候,i和j就为空了,后边用到i和j的就出错了。所以后边用i 和j前,应先判断是否为空。
【 在 MarchFeng 的大作中提到: 】
: 你程序中主要是因为for的十次循环中,有些是y中的元素不等于smld中的,执行到这一步的时候,i和j就为空了,后边用到i和j的就出错了。所以后边用i 和j前,应先判断是否为空。
恩 确实要用isempty判断一下是否为空
y=floor(abs(100*randn(161,161)));
b1=abs(randn(1,161));
a1=abs(randn(1,161));
smld=[98 18 29 12 31 23 19 91 21 8];
for t=1:10
[i j]=find(y==smld(t));
if isempty(i)
break;
else
phi=b1(1,max(j));
alfa=a1(1,max(i));
d1(t)=cos(2*alfa);
d2(t)=sin(2*alfa)*cos(phi);
d3(t)=sin(2*alfa)*sin(phi);
hold on
end
end
plot3(d1,d2,d3,'k*') ;
把相关的参数改成你的参数,我这些都是随机生成的。