我在Matlab中有一个大小为GxN
的矩阵index
和一个大小为MxN
的矩阵A
。
在提出我的问题之前,让我先举个例子。
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
我希望您能帮助构建一个大小为
GxM
的矩阵Response
,如果行A(m,:)
等于index(g,:)
,则Response(g,m)=1
,否则为零。请参考上面的例子。Response= [1 0 0 1 0;
0 0 0 0 1]; %GxM
这段代码可以满足我的需求(取自于我之前的一个问题,链接:previous question of mine - 仅为澄清:当前的问题是不同的)
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
),该命令非常缓慢。我知道我无法获得巨大的速度,但任何可以改善这一点的东西都是受欢迎的。