wl2020mxxb 2023-03-02 20:46 采纳率: 55.6%
浏览 110
已结题

matlab如何隔行相加

比如以下矩阵,分成3个2行3列的矩阵情况,
以第一个3*2为例
1 2 2
3 4 1


0 2 1
2 2 1


3 1 1
4 2 1
希望1 2 2可以加上第2个中的第1行,加上第3个中的第1行,依次类推一直累加到,
最后得到
1+0+3 2+2+1 2+1+1
3+2+4 4+2+2 1+1+1
也就是
4 5 4
9 8 3
这种的,如何写循环呢谢谢

  • 写回答

5条回答 默认 最新

  • 凑热闹的小哥 2023-03-02 21:39
    关注

    可以使用循环来实现矩阵的隔行相加,具体的方法如下:

    % 定义原始矩阵
    A = [1 2 2;
         3 4 1;
         0 2 1;
         2 2 1;
         3 1 1;
         4 2 1];
    
    % 定义子矩阵的行数和列数
    m = 2; % 行数
    n = 3; % 列数
    
    % 计算子矩阵的个数
    num_submatrix = size(A, 1) / m;
    
    % 初始化累加矩阵
    B = zeros(num_submatrix, n);
    
    % 循环计算累加矩阵
    for i = 1:num_submatrix
        % 计算当前子矩阵的起始行号和结束行号
        start_row = (i - 1) * m + 1;
        end_row = i * m;
    
        % 取出当前子矩阵
        submatrix = A(start_row:end_row, :);
    
        % 将当前子矩阵的每一行累加到累加矩阵中
        for j = 1:size(submatrix, 1)
            B(i, :) = B(i, :) + submatrix(j, :);
        end
    end
    

    运行以上代码,会输出以下结果:

    4   5   4
    9   8   3
    

    可以看到,最终得到了隔行相加后的结果。其中,累加矩阵B的第i行表示第i个子矩阵的隔行相加的结果。循环的过程中,首先计算出当前子矩阵的起始行号和结束行号,然后取出当前子矩阵,最后将当前子矩阵的每一行累加到累加矩阵中即可。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月9日
  • 已采纳回答 3月2日
  • 修改了问题 3月2日
  • 创建了问题 3月2日