0

例子

a={'你好' '我的' '名字' '是' '山姆'}

b={'and' '我的' '名字' '是' 'Susan'}

  • 从一个搜索

'你好'在一个吗?是的,所以输出 1

'我的'是一个吗?是的,所以输出 1

......

'山姆'在一个吗?是的,所以输出 1

所以我们得到**

  • 矩阵1=[1 1 1 1 1]

**

然后,将 a 和 b 中的单词翻阅到 b

b中的“你好”吗?不,输出 0 在 b 中是 'my'' 吗?是的,输出 1

...

'Sam' 在 b 中吗?不,输出 0

'and' 在 b 中吗?是的,输出 1

“我的”在 b 中吗?是的,但忽略“我的”已经存在。

...一直到“苏珊”。

我们得到了这个

**

  • 矩阵2=[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 回答