我有一个矩阵,里面有一列数据。该列中包含1556480
个数据点。调用矩阵Vmatrix
。我有另一个1520
值的矩阵。请拨打此Vmean_matrix
。是否可以创建for
循环以从Vmean_matrix
中的第一个1024
值和Vmatrix
中的第二个值中减去Vmean_matrix
中的第一个值}来自矩阵1025
中的值2048
- Vmatrix
,依此类推?
答案 0 :(得分:3)
将Vmatrix
重塑为1024行矩阵,将Vmean_matrix
重塑为一行,然后使用bsxfun
减去:
result = bsxfun(@minus, reshape(Vmatrix, 1024, []), Vmean_matrix(:).'); %'// 1024 rows
result = result(:); %// linearize if needed
答案 1 :(得分:1)
这可能是一种方式:
% // Vmatrix = ...
% // Vmean_matrix = ...
len = length(Vmean_matrix);
sub = [];
for ii = 0 : len - 1
sub = [sub; Vmatrix( ii*1024+1 : (ii+1)*1024 ) - Vmean_matrix(ii+1)];
end
或者为了加快速度,你可以这样写:
% // Vmatrix = ...
% // Vmean_matrix = ...
len = length(Vmean_matrix);
sub = zeros(length(Vmatrix), 1);
for ii = 0 : len - 1
sub( ii*1024+1 : (ii+1)*1024 ) = Vmatrix( ii*1024+1 : (ii+1)*1024 ) - Vmean_matrix(ii+1);
end