0

a={'こんにちは' '私の' '名前' 'は' 'サム'}

b={'and' 'my' 'name' 'is' 'Susan'}

  • から探す

「こんにちは」はaですか?はい、出力 1

'my' は a ですか? はい、出力 1

.. ..

'Sam' は a にありますか? はい、出力 1

**を取得します

  • マトリックス1=[1 1 1 1 1]

**

次に、a と b から b の単語に目を通します。

「こんにちは」はbですか?いいえ、出力 0 'my'' は b に含まれていますか? はい、出力 1

...

「サム」は b ですか? いいえ、0 を出力します

'and' は b にありますか? はい、出力 1

'my' は b ですか? はい。ただし、'my' が既に存在するため無視してください。

...「スーザン」までずっと。

そして、これを取得します

**

  • Matrix2=[0 1 1 1 0 1 1]

** は、'hello' 'my' 'name' 'is' 'Sam' 'and' 'Susan' を読み取るため、両方の文のすべての単語が保存されています。

すべて異なる次元の多数の行列に対してこれを行う必要があります。これまでのところ、次のとおりです。

    for i=1:length(a)
           for j=1:length(a)
           if isequal(a{i}, a{j})
             a{i}=1;
           else
            a{j}=0;
           end
           end
    end

これは [1 1 1 1 1 ] を返しません。ここから何をすればよいかわかりません。

4

1 に答える 1

0

MATLAB のunique()の使用が許可されている場合は、次のようにします。

a = {'hello' 'my' 'name' 'is' 'Sam'};
b = {'and' 'my' 'name' 'is' 'Susan'};

% Combine the two inputs
c = [a,b];

% Get unique strings without sorting and retaining first occurrence in posC
[unC, posC] = unique(c);

% Create logical tf and check true in positions determined by posC
tf       = false(size(c));
tf(posC) = true;

% Check result
c(tf)
ans = 
    'hello'    'my'    'name'    'is'    'Sam'    'and'    'Susan'
于 2013-04-12T13:26:46.767 に答える