我有一个包含 x、y 和 z 坐标的 anx 3 double。有人可以告诉我我哪里出错了吗?
store_y_temp=real(Y(Y>Iy));
store_z_temp=Z(store_y_temp);
错误:下标索引必须是实数正整数或逻辑数。
我有一个包含 x、y 和 z 坐标的 anx 3 double。有人可以告诉我我哪里出错了吗?
store_y_temp=real(Y(Y>Iy));
store_z_temp=Z(store_y_temp);
错误:下标索引必须是实数正整数或逻辑数。
我建议你正在做类似的事情
找到这样的点- 这个坐标数组大于一些,然后找到这些点'-坐标。
你有几种方法可以做到这一点。
最简单的命令是(如果我们假设同一行对应同一点):
z_temp = z(y>Iy);
要么
z_temp = z(find(y>Iy));
y>Iy
1
如果满足条件,则返回条目中的逻辑向量,0
否则。find
查找非零条目的索引。虽然第一个更快(如果您在编写脚本时使用第二个,mlint
会提醒您第一个方法更好......)。
例子:
x = [1; 2; 3; 4];
y = [1/2; -1/2; -3/2; 3/2];
z = [5; 6; 7; 8];
键入第一个命令结果:
>> z_temp = z(y>0)
z_temp =
5
8
您收到错误的原因store_y_temp
是不是整数,您使用它来引用数组索引。检查一个类似的问题。
a=imread('3.jpg'); a1=零(大小(a));对于 i=1:size(a,1) 对于 j=1:size(a,2) 对于 k=1:3 if((a((i-1),j,k)>=a(i,j ,k) && a(i,j,k)>=a((i+1),j,k)) ||(a((i-1),j,k)>=a(i,j, k)&& a(i,j,k)>=a((i+1),j,k))||(a(i,(j-1),k)>=a(i,j,k )&& a(i,j,k)>=a(i,(j+1),k))|| (a(i,(j-1),k)<=a(i,j,k) && a(i,j,k)<=a(i,(j+1),k))|| (a((i+1),(j+1),k)>=a(i,j ,k)&&a(i,j,k)>=a((i-1),(j+1),k))|| (a((i+1),(j+1),k)< =a(i,j,k)&&a(i,j,k)<=a((i-1),(j+1),k))|| (a((i-1),(j- 1),k)>=a(i,j,k)&& a(i,j,k)>=a((i+1),(j+1),k))|| (a((i -1),(j-1),k)<=a(i,j,k)&& a(i,j,k)<=a((i+1),(j+1),k)) ) a1(i,j,k)=圆形(a(i,j,k)); 否则 a1(i,j,k)=round((a((i-1),(j-1),k)+a((i-1),j,k)+a((i-1) ,(j+1),k)+a(i,(j-1),k)+a(i,(j+1),k)+a((i+1),(j-1), k)+a((i+1),j,k)+a((i+1),(j+1),k))/8);结束结束结束???下标索引必须是实数正整数或逻辑数。
请帮我