1

前提: 私の問題に関連していると思われるものを見つけましたが、それを使用する方法がわからないため、新しい質問をしています。

私はセルマトリックスを持っています。それをAと呼びます。これは次のようになります。

[ 'string' 'string' 'number'

'string' 'string' 'number'

........................... ]

そして、作成したばかりのセル配列を と呼びB = ['string' 'string' 'number']、行列 A と比較して、B が既にどこかにあるかどうかを確認する必要があります。ismember を使用しようとすると、引数が文字列ではないため、matlab はエラーを返します。

私は何をすべきか?

助けてくれてありがとう

4

2 に答える 2

2

あなたの質問は少し不明確なので、この答えは、これらの仮定が次の場合にのみ有効です。

  • コード スニペットが示唆するように、2 次元の char 配列ではなく、セル配列を意味します。
  • セル配列 A と B の 2 次元の要素数は同じです。

次の行は、1 と 0 の列ベクトルを返します。1 は、B 要素が X の行と一致することを示します。

sum(cellfun(@isequal,X,repmat(B,size(X,1),1)),2)==size(X,2)

簡単な説明:

  • repmat は B を X のサイズに複製します。
  • cellfun は、2 つの行列のすべての要素を比較します。
  • sum は、各行の一致する文字列の数をカウントします。
  • == は、指定された行のすべての要素が一致するかどうかを確認します。

それが役に立てば幸い

于 2012-12-28T12:38:53.060 に答える
1

どの変数があるか正確にはわかりませんが、これはうまくいくかもしれません:

すべてを文字列に変換してから、ismember を使用します。次に例を示します。

['string' '_' 'string' '_' num2str(number)]

ismember の両方の入力でこれを行うようにしてください。


変数のサイズによっては、すべて (または一意のすべて) を B にアタッチしてから実行する方が簡単な場合がありますunique

于 2012-12-28T12:25:16.200 に答える