【发布时间】:2019-02-06 16:27:31
【问题描述】:
我在 Matlab 中有一个大小为 Gx(l*N) 的矩阵 Ksets 和一个大小为 MxN 的矩阵 A。
Ksets 的每一行都可以分解为l 大小为1xN 的子行。
让我用一个例子更好地解释一下。
clear
N=3;
l=4;
G=2;
M=5;
Ksets=[1 2 3 5 6 7 9 10 11 0 0 0;
13 14 15 1 2 3 21 22 23 1 1 1]; %Gx(l*N)
A=[1 2 3;
5 6 7;
21 22 23;
1 2 3;
0 0 0]; %MxN
在示例中:
Ksets的行1由l大小为1xN的子行组成:[1 2 3]、[5 6 7]、[9 10 11]、[0 0 0];Ksets的行2由l大小为1xN的子行组成:[13 14 15]、[1 2 3]、[21 22 23]、[1 1 1]。
我假设Ksets 的每一行不包含相等的子行。
如果A(m,:) 的行等于Ksets(g,:) 的l 子行之一,则我希望您帮助构造一个大小为GxM 和Response(g,m)=1 的矩阵Response,否则为零。
继续上面的例子
Response= [1 1 0 1 1;
1 0 1 1 0]; %GxM
这段代码做我想做的事:
Responsecorrectmy=zeros(G, M);
for x=1:G
for c=1:l
Responsecorrectmy(x,:)=Responsecorrectmy(x,:)+...
ismember(A,Ksets(x,(c-1)*N+1:c*N), 'rows').';
end
end
我的代码由 2 个循环组成,这是不可取的,因为在我的真实算法中 G,l 很大。你有没有循环的建议?
【问题讨论】:
标签: matlab