2016-05-22 24 views
0

なぜこのエラーが発生しますか?行列は全く同じサイズのものである:Matlabの行列の寸法は一致する必要があります

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 

は、ここで私は取得エラーです:同意しなければなりません& マトリックスの寸法を使用して エラー。

+0

これらのコード行からエラーが発生していることは確かですか? – Suever

答えて

0

エラーとは、AB、およびCが同じサイズではないことを意味します。あなたはそれをチェックすることができます:

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

それはあなたがそれを投稿したようなコードは問題がないと言われています。実際にこれらのコード行からエラーが発生している場合は、A,B、およびCをスクリプト内の別のサイズに初期化しておく必要があります(または以前に同じ変数名を使用していて、 。ループの前にそれらを事前に割り当てて、それらが同じサイズであることを確認する必要があります。

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); 
関連する問題