【发布时间】:2023-03-14 13:33:01
【问题描述】:
标题可能听起来很奇怪。所以这里是例子。
说length是一个在MATLAB中广泛使用的关键字或内部函数,有人保存了一个名为length的变量。
我可以毫无问题地运行以下脚本,但如果我将它放在函数中会产生错误(使用 R2015b)
有效的脚本
clear length;
length = [1 2 4];
la = length;
clear length;
b = length(la);
不起作用的功能
function test(a)
length = [1 2 4];
save('data.mat','length');
clear length;
load('data.mat');
% load
la = length;
clear length;
b = length(la);
end
错误:引用已清除的可变长度。
为什么会这样? MATLAB 如何以不同的方式处理这些情况?这应该发生在其他功能/关键字上吗?
【问题讨论】:
-
能否添加可重现的代码(以及实际错误)。
-
实际错误是什么?它发生在哪里?我无法重现您的错误。
-
在我的 Matlab 控制台中:
Error using length Not enough input arguments. Error in loadtracts (line 9) la = length; -
仍然无法重现。我在 MATLAB R2015a 上,这是我的控制台的快照:i.stack.imgur.com/AslOZ.png。在这里,我创建了一个虚拟变量
length,将其设置为 5,将该变量保存到 MAT 文件中,清除工作区,再次加载它并尝试您在上面执行的分配。它有效。 -
``` %% 脚本工作清晰长度;长度 = [1 2 4]; la = 长度;明确的长度; b = 长度(la); %% 函数不起作用函数 test(a) 长度 = [1 2 4];保存('data.mat','长度');明确的长度;加载('data.mat'); % 负载 la = 长度;明确的长度; b = 长度(la); % 错误:引用已清除的可变长度。 ```
标签: matlab variables namespaces keyword