0

初学者 matlab 用户在这里。我正在尝试编写一个函数,将 a 和 b 相乘,如果 a 和 b 为正则返回乘积,如果其中任何一个为负则返回 -abs(a*b)。这就是我所拥有的。

function y = MulAnd(a,b)
%MULAND Summary of this function goes here
%   Detailed explanation goes here
if(a<0||b<0)
    y = -(abs(a*b));
else
    y = a*b;
end
end

Matlab 不喜欢它。我究竟做错了什么?

4

2 回答 2

1

您可以尝试以下适用于标量或向量的方法

function y = MulAnd(a,b)
%MULAND Summary of this function goes here
%   Detailed explanation goes here
y = a.*b;
negative = a<0 | b<0;
y(negative) = -abs(y(negative));
end
于 2013-09-23T21:04:57.277 回答
1

我认为您的代码很好,我认为 @OlegKomarov 的评论包含答案。

当 MATLAB 由于 MATLAB 代码分析器出现问题而意外崩溃时,它会将导致问题的文件的名称添加到文件中MLintFailureFiles。当您稍后打开 MATLAB 文件时,这会导致红色指示符出现在该文件中。

尝试这个:

  1. 键入cd(prefdir)
  2. 打开MLintFailureFiles,然后删除文件名 ( MulAnd.m)。
  3. 保存并关闭MLintFailureFiles

现在再试一次MulAnd

于 2013-09-24T08:53:13.123 回答