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
我有一个包含 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