【问题标题】:matlab column and row element summation using a for loop使用for循环的matlab列和行元素求和
【发布时间】:2013-04-23 21:07:03
【问题描述】:

我需要在不使用任何 Matlab 函数并使用 for 和 while 循环的情况下为类连接一个算法,这给了我两个新向量,一个是每列元素的总和,另一个是每行元素的总和,比较它们。

基于我在 python 中编写的类似代码,我走到了这一步:

A = input('Matrix Input: '); 
[m, n] = size(A);

for i = 1:m;
    sumRow = zeros(1,m);
    for j = 1:n;
        sumRow = sumRow + A(i,j);
    end;
end;
for i = 1:n;
    sumCol = zeros(1,n);
    for j = 1:m;
        sumCol = sumCol + A(j,i);
    end;
end;
A %#ok<NOPTS>
sumRow %#ok<NOPTS>
sumCol %#ok<NOPTS>

但在 Matlab 中,我只能将最后一行和最后一列中元素的总和存储在新向量中,而在 python 中,我得到每行或每列一个元素的向量。

我将不胜感激。

【问题讨论】:

    标签: matlab for-loop vector matrix sum


    【解决方案1】:

    您没有正确分配给sumRow,并且每次循环都用零向量覆盖。您的代码应如下所示:

    sumRow = zeros(1,m);
    for i = 1:m;
        for j = 1:n;
            sumRow(i) = sumRow(i) + A(i,j);
        end;
    end;
    
    sumCol = zeros(1,n);
    for i = 1:n;
    
        for j = 1:m;
            sumCol(j) = sumCol(j) + A(j,i);
        end;
    end;
    

    这样,您在循环之外创建sumRow,sumRow 的ith 元素将是行中所有列的总和。

    【讨论】:

    • 谢谢,但现在我收到一条错误消息“尝试访问 sumRow(2);索引超出范围,因为 numel(sumRow)=1。”
    • 您确定复制正确吗?我刚刚测试过,没有任何问题。该错误永远不会发生,因为i1 变为m,并且sumRow 被初始化为长度m
    • 不知道出了什么问题,之后我得到了一些其他错误,因为两个向量是相同的,但我修改它以检查第二行中 A 的转置,并且它起作用了。非常感谢!
    • @user2052579 没问题。如果我的回答有帮助,请随时将其标记为已接受的答案;)
    猜你喜欢
    • 1970-01-01
    • 2017-01-23
    • 2021-12-17
    • 2017-07-14
    • 2022-01-23
    • 2021-06-06
    • 1970-01-01
    • 2018-01-01
    • 1970-01-01
    相关资源
    最近更新 更多