-2

194 行 1 列の行列が 1 つあります。そのサイズを見つけようとすると、次のメッセージが表示されます。

Subscript indices must either be real positive integers or logicals.

すべての値は肯定的で論理的ですが、何が問題なのですか?

4

3 に答える 3

5

size誤って関数をオーバーライドする可能性はありますか?

>> which size

この出力を与える必要があります

組み込み (C:\ XXX \toolbox\matlab\elmat\size)

次のようなものが得られた場合

サイズは可変です

次に、関数をオーバーライドします。

これを修正するにはclear、変数を変更する必要があります

>> clear size

これで関数を使用できます

>> size( A )
于 2013-05-09T11:20:51.947 に答える
2

コードを提供できますか?次のようにするとうまくいくはずです:

[rows cols] = size(A);

また

rows = length(A);
于 2013-05-09T11:18:20.053 に答える
2

MATLAB では、size配列 (行列、セル配列など) の次元を返す関数です。ただし、MATLAB はオーバーロードもサポートしています。を呼び出すとsize(A)(が行列であると仮定A)、MATLAB インタープリターは最初に、名前が のオーバーロードされた変数/関数があるかどうかをチェックしますsize

どうやらsize、エラー メッセージから判断すると、という名前の変数があるようです。したがって、MATLABの場合、添字変数 を使用size(A)して行列にインデックスを付けようとしていることを意味します。には 1 つ以上のゼロ要素があるようです。MATLAB では正でないインデックスは禁止されているため、前述のエラーが発生します。sizeAA

最も簡単な解決策は、変数に別の名前を使用して、組み込み関数を問題なくsize呼び出すことができるようにすることです。size

于 2013-05-09T11:20:59.823 に答える