【问题标题】:Divide a matrix into small matrices with equal number of columns using for loop in Matlab?在Matlab中使用for循环将矩阵划分为列数相等的小矩阵?
【发布时间】:2019-09-28 21:00:09
【问题描述】:

我有一个大小为 1*92609 的矩阵。我想循环矩阵并一次取 8 个值,以与另一个 8 位大小的矩阵执行元素乘法。要么,我想要做的就是划分矩阵,这样在第一次迭代中只取前 1:8 元素,而在第二次迭代中,取 8:16 元素,依此类推。

如何在 matlab 中使用“for”循环来实现这一点。这是矩阵的屏幕截图。

【问题讨论】:

    标签: matlab for-loop matrix


    【解决方案1】:

    如果你的矩阵是MTX,你可以这样做

    N = numel(MTX)
    for k = 1:8:N
       subMtx = MTX(k:min(k+7,N));
       do your processing with subMtx
    end
    

    表达式1:8:N 给出了序列1, 9, 17, ...min(k+7,N) 是必需的,因为矩阵大小 (92609) 不能被 8 整除。请注意最后一个子矩阵只有一个元素。

    HTH

    【讨论】:

      【解决方案2】:

      x 是你的原始数组,你想取每 8 个元素的平均值

      n = floor( length(x)/8 );       % how many series of 8 elements in x
      y = zeros( 1,n );               % preallocate
      k = 0;                          % counter for y array
      for i = 1:8:length(x)-1
          k = k + 1;
          y(k) = mean( x(i:i+7) );    % take mean of each 8 elements
      end
      

      【讨论】:

      • x(i+7) 可能不存在,请参阅其他答案。
      • 注意这一行for i = 1:8:length(x)'i'不能大于length(x)-8
      • 好的。你说的对。应该是:for i = 1:8:length(x)-1
      • 应该是8*n。或者循环遍历k=1:n
      • 你知道你可以edit你的答案来纠正它吗?这些 cmets 可以删除,在这里留下一个不完全正确的答案!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-12
      • 2011-05-31
      • 1970-01-01
      • 1970-01-01
      • 2011-12-29
      相关资源
      最近更新 更多