194 行 1 列の行列が 1 つあります。そのサイズを見つけようとすると、次のメッセージが表示されます。
Subscript indices must either be real positive integers or logicals.
すべての値は肯定的で論理的ですが、何が問題なのですか?
size
誤って関数をオーバーライドする可能性はありますか?
>> which size
この出力を与える必要があります
組み込み (C:\ XXX \toolbox\matlab\elmat\size)
次のようなものが得られた場合
サイズは可変です
次に、関数をオーバーライドします。
これを修正するにはclear
、変数を変更する必要があります
>> clear size
これで関数を使用できます
>> size( A )
コードを提供できますか?次のようにするとうまくいくはずです:
[rows cols] = size(A);
また
rows = length(A);
MATLAB では、size
配列 (行列、セル配列など) の次元を返す関数です。ただし、MATLAB はオーバーロードもサポートしています。を呼び出すとsize(A)
(が行列であると仮定A
)、MATLAB インタープリターは最初に、名前が のオーバーロードされた変数/関数があるかどうかをチェックしますsize
。
どうやらsize
、エラー メッセージから判断すると、という名前の変数があるようです。したがって、MATLABの場合、添字変数 を使用size(A)
して行列にインデックスを付けようとしていることを意味します。には 1 つ以上のゼロ要素があるようです。MATLAB では正でないインデックスは禁止されているため、前述のエラーが発生します。size
A
A
最も簡単な解決策は、変数に別の名前を使用して、組み込み関数を問題なくsize
呼び出すことができるようにすることです。size