将数据放入Matrix

时间:2017-04-27 14:06:18

标签: matlab matrix sampling

我使用Matlab,我有这个大矢量表示从512赫兹采样的5到55秒的时间,所以每个样本都是aprox。 0.0020秒 我想填充矩阵,以便每行代表10秒。间隔。 即行15-15,行2 15-25,行3 25-35,行4 35-45和行5 45-55秒。 所以我用5121个元素创建了一个矩阵5,并创建了这个循环

Matrix=ones(5,5121)
tmp=1;
 for row=1:5
   for column=1:5121
    Matrix(row,column)=t(tmp);

    tmp=tmp+1;
   end 
end

问题在于,当我转到新行时,我希望在新行中重复前一行的最后一个值。

5-5.0020-5.0039 ... 15

15-15.0020等等。

通过我创建的这个循环我有这种情况

5-5.0020-5.0039 ... 15

15.0020-15.0039

希望你能帮助我 感谢

2 个答案:

答案 0 :(得分:1)

n_rows = 5;
n_cols = 5121;
overlap_size = 10;

t = rand(n_rows*n_cols,1);
matrix = nan(n_rows,n_cols); 
i_t = 1;
 for i_row = 1 : n_rows
   for i_col = 1 : n_cols
    matrix(i_row,i_col) = t(i_t);
    i_t=i_t+1;
   end 
 end

matrix = [matrix(1:end-1,(end-overlap_size+1):end),matrix(2:end,:)];

当然,如果这是整个代码,而你没有其他操作,这是一个更好的解决方案:

n_rows = 5;
n_cols = 5121;
overlap_size = 10;
t = rand(n_rows*n_cols,1);
matrix = reshape(t,[n_cols,n_rows])';
matrix = [matrix(1:end-1,(end-overlap_size+1):end),matrix(2:end,:)];

答案 1 :(得分:0)

这可能会对你有所帮助。但是你需要考虑改变矩阵的大小。

"baseDir": ["dist", "src"],