У меня есть матрица Ksets
в Matlab с размером Gx(l*N)
и матрица A
с размером MxN
.
Каждая строка 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
В примере:
строка 1
из Ksets
состоит из l
подстрочек размером 1xN
: [1 2 3]
, [5 6 7]
, [9 10 11]
, [0 0 0]
;
строка 2
из Ksets
состоит из l
подстрочек размером 1xN
: [13 14 15]
, [1 2 3]
, [21 22 23]
, [1 1 1]
.
Я предполагаю, что каждая строка Ksets
не содержит равных подстрок.
Я хотел бы, чтобы вы помогли построить матрицу Response
с размером GxM
с Response(g,m)=1
, если строка A(m,:)
равна одной из l
подстрок Ksets(g,:)
и нулю в противном случае.
Продолжая пример выше
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
большие. У вас есть предложения без петель?