所以我试图创建一个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'类型的输入参数。” 如果你能告诉我这方面的错误并修复你能做的任何事情,我将不胜感激。谢谢!
答案 0 :(得分:2)
使用logical indexing过滤掉except
之后对数组求和:
total = sum(matrix( matrix ~= except ));
在matrix ~= except
上使用逻辑索引matrix
的结果会返回一个列向量,因此只需要一个sum
。
错误" Undefined function 'sumAllExcept' for input arguments of type 'double'.
"可能是因为函数不在MATLAB的路径上,或者函数名sumAllExcept
与文件名不匹配(即sumAllExcept.m
)。