For循环减去矩阵之间的值

For loop to subtract values between matrices

我有一个包含 1 列数据的矩阵。该列中有 1556480 个数据点。调用矩阵Vmatrix。我有另一个具有 1520 值的矩阵。称之为 Vmean_matrix。是否可以创建一个 for 循环来从 Vmatrix 中的第一个 1024 值和 Vmean_matrix 中的第二个值中减去 Vmean_matrix 中的第一个值] 来自矩阵 Vmatrix 中的值 1025 - 2048 等等?

这可能是一种方式:

% // 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

Vmatrix整形为1024行矩阵,将Vmean_matrix整形为单行,并用bsxfun相减:

result = bsxfun(@minus, reshape(Vmatrix, 1024, []), Vmean_matrix(:).'); %'// 1024 rows
result = result(:); %// linearize if needed