我正在試圖找出一種矩陣導向的方式來在MATLAB中按行執行ismember函數。也就是說,如果我有矩陣在MATLAB中按行排序
[1 2 3 4 5 6]
[7 8 9 10 11 12]
而且我把
[3 4 5]
[10 11 12]
進入一些ismember十歲上下的功能,我想它返回
[0 0 1 1 1 0]
[0 0 0 1 1 1]
除了遍歷for循環中的矩陣的每一行,有沒有辦法做到這一點?
我正在試圖找出一種矩陣導向的方式來在MATLAB中按行執行ismember函數。也就是說,如果我有矩陣在MATLAB中按行排序
[1 2 3 4 5 6]
[7 8 9 10 11 12]
而且我把
[3 4 5]
[10 11 12]
進入一些ismember十歲上下的功能,我想它返回
[0 0 1 1 1 0]
[0 0 0 1 1 1]
除了遍歷for循環中的矩陣的每一行,有沒有辦法做到這一點?
假設你的數據可作爲矩陣A
和B
A = [
1 2 3 4 5 6
7 8 9 10 11 12
];
B = [
3 4 5
10 11 12];
,你可以將它們轉換爲細胞,然後使用cellfun
cellA = mat2cell(A, ones(1, size(A,1)), size(A,2));
cellB = mat2cell(B, ones(1, size(B,1)), size(B,2));
membership = cell2mat(cellfun(@ismember, cellA, cellB, 'UniformOutput', false));
這將返回
membership =
0 0 1 1 1 0
0 0 0 1 1 1
優秀。還沒有機會測試它,但這看起來正是我所需要的。謝謝。 –
A = [5 3 4 2]; B = [2 4 4 4 6 8];
[Lia1,Locb1] = ismember(A,B)
Lia1 =
1 1 1 1 0 0
Locb1 =
4 3 3 3 0 0
'[1 2 3 4 5 6] [7 8 9 10 11 12]'2行同一個矩陣? –
@FranckDernoncourt:很好的問題 - 如果答案是肯定的,解決方案要簡單得多。 – Jonas
這是否需要匹配排序模式,第二個輸入或僅匹配元素。也就是說,如果你放入'[5 4 3]'而不是'[3 4 5]',答案會不同嗎? – Pursuit