0

文字列を照合してフィルタリングしようとしている非常に簡単な例があります。

A = [0:1:999];
B = A(int2str(A) == '999');

これ

A(A > 990);

作品

これ

int2str(5) == '5'

も動作します

なぜ2つを一緒にできないのか理解できません。不適合な引数に関するエラーが発生します。

4

3 に答える 3

0

文字列を数値に変換する方が、逆よりもはるかに高速で正しいはずです。試す

B = A(A == str2double ('999'));
于 2013-04-27T19:31:34.523 に答える
0

int2str()変換があなたが探しているものかどうかわかりません。(また、数値を文字列に変換してから char 比較を実行する必要があるのはなぜですか?)

より単純なケースがあるとします:

A    = 1:3;
strA = int2str(A)
strA =
1  2  3

これは 1x7 文字配列であることに注意してください。したがって、それをスカラー char と比較すると、次のようになります。

strA == '2'
ans =
     0     0     0     1     0     0     0

Aここで、転置して比較を実行したいと思うかもしれません:

int2str(A')=='2'
ans =
     0
     1
     0

ただし、各数値の桁数が同じでない場合、このアプローチは機能しません。これは、小さい数値がスペースで埋められるためです ( を作成A = 1:10して比較してみてください'2')。

次に、空白を含まない文字列のセル配列を作成し、次を使用しますstrcmp()

csA = arrayfun(@int2str,A','un',0)
csA = 
    '1'
    '2'
    '3'

strcmp('2',csA)
于 2013-04-27T04:12:11.580 に答える