【问题标题】:For loop to subtract values between matricesFor循环在矩阵之间减去值
【发布时间】:2015-01-10 15:28:35
【问题描述】:

我有一个包含 1 列数据的矩阵。该列中包含 1556480 个数据点。调用矩阵Vmatrix。我有另一个带有1520 值的矩阵。打电话给Vmean_matrix。是否可以创建一个for 循环以从Vmatrix 中的第一个1024 值中减去Vmean_matrix 中的第一个值,从1025 中的值中减去Vmean_matrix 中的第二个值@ - @987654331 @在矩阵中Vmatrix等等?

【问题讨论】:

  • 给我们看一些代码...

标签: matlab for-loop matrix


【解决方案1】:

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

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

【讨论】:

  • 我注意到Vmatrix1024 x nVmean_matrix1024 x 1。是否是 bsxfun 的单例扩展启动,以便 Vmean_matrix 扩展为与 Vmatrix 相同的大小?
【解决方案2】:

这可能是一种方式:

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

【讨论】:

    猜你喜欢
    • 2016-08-21
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多