У меня есть матрица index
в Matlab с размером GxN
и матрица A
с размером MxN
.
Позвольте мне привести пример перед тем, как представить мой вопрос.
clear
N=3;
G=2;
M=5;
index=[1 2 3;
13 14 15]; %GxN
A=[1 2 3;
5 6 7;
21 22 23;
1 2 3;
13 14 15]; %MxN
Я хотел бы, чтобы вы помогли построить матрицу Response
с размером GxM
с Response(g,m)=1
, если строка A(m,:)
равно index(g,:)
и равно нулю в противном случае.
Продолжая приведенный выше пример
Response= [1 0 0 1 0;
0 0 0 0 1]; %GxM
Этот код делает то, что я хочу (взято из моего предыдущего вопроса - просто чтобы уточнить: текущий вопрос другой)
Response=permute(any(all(bsxfun(@eq, reshape(index.', N, [], G), permute(A, [2 3 4 1])), 1), 2), [3 4 1 2]);
Тем не менее, команда очень медленная для моих реальных размеров матрицы (N=19, M=500, G=524288
).Я понимаю, что не смогу набрать огромную скорость, но все, что может улучшить это, приветствуется.