用于循环以减去矩阵之间的值

时间:2015-01-10 15:28:35

标签: matlab for-loop matrix

我有一个矩阵,里面有一列数据。该列中包含1556480个数据点。调用矩阵Vmatrix。我有另一个1520值的矩阵。请拨打此Vmean_matrix。是否可以创建for循环以从Vmean_matrix中的第一个1024值和Vmatrix中的第二个值中减去Vmean_matrix中的第一个值}来自矩阵1025中的值2048 - Vmatrix,依此类推?

2 个答案:

答案 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