Matlab Matrix维度必须一致

时间:2016-05-22 19:24:36

标签: matlab matrix

为什么我收到此错误?矩阵的大小完全相同:

L=rand(4,1000);
 for i=1:1000;
    A(i)=logzn(0.1,0.4,L(4,i));
    B(i)=logzn(0.3,0.7,L(4,i));
    C(i)=logzn(0.5,1.0,L(4,i));
end
F=(~A&B | ~B&C);

这里是logzn函数:

function [ y ] = logzn( aMin,aMax,x )
if ((aMin<=x)&&(aMax>=x)) 
    y=1;
else
    y=0;
end

这是我得到的错误: 使用&amp;错误 矩阵维度必须一致。

1 个答案:

答案 0 :(得分:0)

错误意味着它所说的内容,ABC的大小不同。您可以查看:

isequal(size(A), size(B)) && isequal(size(A), size(C))

话虽如此,您发布的代码没有任何问题;但是,如果错误实际上来自这些代码行,则必须在脚本中的其他位置将ABC初始化为不同的大小(或者您可能使用过之前的变量名称相同,并没有清除它们。您需要在循环之前预先分配它们,以确保它们的大小相同。

L = rand(4, 1000);
[A, B, C] = deal(zeros(size(L,2), 1));

for k = 1:size(L,2);
    A(k)=logzn(0.1,0.4,L(4,k));
    B(k)=logzn(0.3,0.7,L(4,k));
    C(k)=logzn(0.5,1.0,L(4,k));
end

F=(~A&B | ~B&C);