【问题标题】:Matlab Matrix dimensions must agreeMatlab 矩阵尺寸必须一致
【发布时间】:2016-05-22 19:24:36
【问题描述】:

为什么会出现此错误?矩阵的大小绝对相同:

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

这是我得到的错误: 使用 & 时出错 矩阵尺寸必须一致。

【问题讨论】:

  • 您确定错误来自这些代码行吗?

标签: matlab matrix


【解决方案1】:

错误的意思与它所说的完全相同,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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-12
    • 2011-12-05
    • 1970-01-01
    • 2014-11-04
    • 2015-01-20
    相关资源
    最近更新 更多