【问题标题】:Sum of all values in matrix (Matlab)矩阵中所有值的总和(Matlab)
【发布时间】:2015-04-02 23:58:17
【问题描述】:

所以我试图创建一个 matlab 函数,它接受两个输入,一个矩阵和一个值,并返回矩阵中除给定值的所有实例之外的所有值的总和。到目前为止,这是我编写的代码:

function [total] = sumAllExcept(matrix, except)
    total = 0;
    for i = 1:size(matrix, 1)
        for k  = 1:size(matrix, 2)
            if(matrix(i, k) ~= except)
                total = total + matrix(i,k);
            end
        end
    end
end

我在尝试运行程序时收到的错误消息是: “未定义函数‘sumAllExcept’用于‘double’类型的输入参数。” 如果您能告诉我这有什么问题并尽可能解决任何问题,我将不胜感激。谢谢!

【问题讨论】:

  • 那么这个问题的答案是单行吗?只是说 sum(sum(matrix ~= except)) 为我处理一切?对不起我的愚蠢问题。与其他编程语言相比,我真的没有得到 matlab
  • 哦等等!我错了!我还以为你在找伯爵呢!我很抱歉。

标签: matlab matrix


【解决方案1】:

使用logical indexing过滤掉except后的数组求和:

total = sum(matrix( matrix ~= except ));

matrix 上使用逻辑索引matrix ~= except 的结果返回一个列向量,因此只需要一个sum


错误“Undefined function 'sumAllExcept' for input arguments of type 'double'.”可能是由于函数不在 MATLAB 的路径上或函数名称 sumAllExcept 与文件名不匹配(即 sumAllExcept.m)。

【讨论】:

  • 抱歉,有需要的请求,但您是否可以写出整个函数。我仍然收到相同的错误消息。感谢您宝贵的时间
  • 我不确定您所说的“整个功能”是什么意思;可以将一行代码放入您的 sumAllExcept 函数中以替换循环和 if 语句。不过,我确实添加了关于未定义函数错误的注释。
  • 谢谢特洛伊哈斯金。这一切真的很有帮助。我的功能完美运行,您为我节省了很多时间和头发撕裂
  • @ScottRothbaum 如果解决了您的问题,请不要忘记点击旁边的空心复选标记来接受解决方案。
  • 没问题。我这样做了。感谢您的所有帮助
猜你喜欢
  • 2016-03-14
  • 2012-11-25
  • 1970-01-01
  • 1970-01-01
  • 2018-12-02
  • 1970-01-01
  • 1970-01-01
  • 2018-07-06
  • 1970-01-01
相关资源
最近更新 更多