如何从Matlab中的for循环将向量的一部分插入矩阵?

如何从Matlab中的for循环将向量的一部分插入矩阵?,matlab,for-loop,matrix,indexing,Matlab,For Loop,Matrix,Indexing,我有两个180000个样本的数据集,以100 Hz的频率采样。我使用两个for循环从第一个数据集中选择一个数据窗口,并将该窗口与整个第二个数据集相关联。滑动窗口相关,如果您愿意的话。然后我从第一个数据集中选择一个新窗口,并在整个第二个数据集中关联它。如果两个数据窗口之间的相关性高于某个限制,我想将该数据插入矩阵中。一个矩阵用于第一个数据集中的窗口,另一个矩阵用于第二个数据集中的窗口。矩阵部分让我很难受。谢谢你的帮助 close all; clear all; win=6000; jump=60

我有两个180000个样本的数据集,以100 Hz的频率采样。我使用两个for循环从第一个数据集中选择一个数据窗口,并将该窗口与整个第二个数据集相关联。滑动窗口相关,如果您愿意的话。然后我从第一个数据集中选择一个新窗口,并在整个第二个数据集中关联它。如果两个数据窗口之间的相关性高于某个限制,我想将该数据插入矩阵中。一个矩阵用于第一个数据集中的窗口,另一个矩阵用于第二个数据集中的窗口。矩阵部分让我很难受。谢谢你的帮助

close all; clear all;

win=6000;
jump=6000;

W=load('TULEG-filter.mat');
a=W.data_filtreret_SI;
U=load('KULLO-filter.mat');
b=U.data_filtreret_SI;
a1=[a; zeros(1,win)'];
b1=[b; zeros(1,win)'];

tic
for j=1:jump:numel(a)
    sig1=a1(j:(win+j-1));
    %env_sig1=envelope(sig1,1000,'peak');
   
for i=1:jump:numel(b)
    sig2=b1(i:(win+i-1));
    %env_sig2=envelope(sig2,1000,'peak');
   
   cor=corrcoef(sig1,sig2);
   c(i)=cor(1,2);
   
   
   
   if c(i)>=0.8
       matrix1(i,:)=sig1;       
       matrix2(i,:)=sig2;   
   end
end
end
toc

matrix1=matrix1(~all(matrix1==0,2),:);
matrix2=matrix2(~all(matrix2==0,2),:);

代码看起来不错。您是否希望
matrix_1
matrix_2
成为列/行向量?“给我一个艰难的时刻”不清楚。这里的问题是什么?我希望每个窗口都是矩阵中的一行。但是,对于每个新j,它都会覆盖矩阵中的旧行。代码适用于第一个j和所有i,但随后开始覆盖。我已经解决了它。现在,j循环不会覆盖矩阵。我不知道如何上传新代码。代码看起来不错。您是否希望
matrix_1
matrix_2
成为列/行向量?“给我一个艰难的时刻”不清楚。这里的问题是什么?我希望每个窗口都是矩阵中的一行。但是,对于每个新j,它都会覆盖矩阵中的旧行。代码适用于第一个j和所有i,但随后开始覆盖。我已经解决了它。现在,j循环不会覆盖矩阵。我不知道如何上传新代码。