gpt4 book ai didi

matlab - 使用 += 运算符时为 "Error: Conflicting with its use here as the name of a function"

转载 作者:行者123 更新时间:2023-12-02 08:31:38 26 4
gpt4 key购买 nike

文件abc.m有

function [] = abc(N)
N += 1;

当我尝试通过为 N 传递任何数字(例如 5)来执行 abc 时,出现错误“N”以前用作变量,与它在这里用作函数名称的用法相冲突。它给出了 N += 1 行的错误;

但我不明白我在哪里使用 N 作为函数名。

最佳答案

正如 David 指出的那样,正确的语法是 N = N + 1。但是,如果您认为收到的错误消息看起来很奇怪,我在下面提供了解释。

这与 MATLAB 如何识别 command syntax 有关。 .根据您放置空格的位置,MATLAB 以不同方式解释命令。请注意,对于 N +* 1N +*-

,您会收到相同的错误消息

+=+*-**0 等在 MATLAB 中不是正确的语法。因此,MATLAB 必须猜测您要做什么。

如果在 += 之前没有任何空格,根据 MA​​TLAB,它必须是对变量的操作。因此,您将收到错误消息:“错误:等号左侧的表达式不是赋值的有效目标”。

+= 前面的空格使这看起来像是对变量的操作,或者尝试将 N 用作函数(类似于 ls , disp, whos 等)。

通常,+= 两边的空格表示这是对变量的操作。但是,+= 运算符不在“Operators and Elementary Operations”的列表中,因此可以排除这种可能性。如果这是一个可以将字符串作为输入的函数,则此语法的唯一可能有效用法。

语法在某些情况下实际上是正确的(尽管无用),例如:

whos += 0  %// Gives no errors

但是:

whos = 1;
whos += 1;
??? Error: "whos" was previously used as a variable,
conflicting with its use here as the name of a function
or command.

总结一下:MATLAB 看到 N += 1 遍历了可能性列表并最终将 N 解释为函数,因为这是唯一可能的情况这将是一个有效的语法。

如果您以这种方式定义函数 N,您将不会收到任何错误消息:

function varargout = N(varargin)
varargout{1} = 'You see, no errors';
end

N += 0
ans =
You see, no errors

关于matlab - 使用 += 运算符时为 "Error: Conflicting with its use here as the name of a function",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26174148/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com