函数在 Octave 中不断重复
Function keeps repeating in Octave
我的代码写在一个文件中"plot.m"。
如果我将以下代码放在 "plot.m" 中,当我调用 plot("20%") 时,Octave GUI 将无限期地打开一个新的 window 和一个新的图形。
function X = plot(folderName)
X = 0;
data = ([folderName, "\summary.txt"]);
NUM_SURVIVED = data(1);
NUM_DATA = size(data)(1)-1;
FINAL_WEALTH = data(2 : NUM_DATA);
%plot FINAL_WEALTH
figure;
plot(1:numel(FINAL_WEALTH), FINAL_WEALTH, '-b', 'LineWidth', 2);
xlabel('x');
ylabel('FINAL_WEALTH');
end
但是,如果我将以下代码放入 "plot.m" 和 运行 中,程序将按预期工作,并将绘制来自 "summary.txt".
的数据
data = ("20%\summary.txt");
NUM_SURVIVED = data(1);
NUM_DATA = size(data)(1)-1;
FINAL_WEALTH = data(2 : NUM_DATA);
%plot FINAL_WEALTH
figure;
plot(1:numel(FINAL_WEALTH), FINAL_WEALTH, '-b', 'LineWidth', 2);
xlabel('x');
ylabel('FINAL_WEALTH');
知道我在第一部分代码中做错了什么吗?我想把它写成一个函数,这样我就可以针对不同的文件夹名称多次调用它。
当您从函数 plot
中调用 plot
时,您将得到无穷无尽的递归。重命名您的函数及其文件。
如果您真的想将您的函数命名为"plot"并覆盖内置的-在 plot
函数中,但是 still 希望能够在其中调用 built-in plot
函数,这实际上可以通过使用 builtin
函数调用 plot
的内置版本来实现。您的代码将如下所示:
function X = plot (folderName)
% same code as before
figure;
builtin ("plot", 1:numel(FINAL_WEALTH), FINAL_WEALTH, '-b', 'LineWidth', 2);
xlabel ('x');
ylabel ('FINAL_WEALTH');
end
显然,首先重载这样一个核心函数是否是个好主意是一个完全不同的讨论话题。 (提示:不要!)
我的代码写在一个文件中"plot.m"。
如果我将以下代码放在 "plot.m" 中,当我调用 plot("20%") 时,Octave GUI 将无限期地打开一个新的 window 和一个新的图形。
function X = plot(folderName)
X = 0;
data = ([folderName, "\summary.txt"]);
NUM_SURVIVED = data(1);
NUM_DATA = size(data)(1)-1;
FINAL_WEALTH = data(2 : NUM_DATA);
%plot FINAL_WEALTH
figure;
plot(1:numel(FINAL_WEALTH), FINAL_WEALTH, '-b', 'LineWidth', 2);
xlabel('x');
ylabel('FINAL_WEALTH');
end
但是,如果我将以下代码放入 "plot.m" 和 运行 中,程序将按预期工作,并将绘制来自 "summary.txt".
的数据data = ("20%\summary.txt");
NUM_SURVIVED = data(1);
NUM_DATA = size(data)(1)-1;
FINAL_WEALTH = data(2 : NUM_DATA);
%plot FINAL_WEALTH
figure;
plot(1:numel(FINAL_WEALTH), FINAL_WEALTH, '-b', 'LineWidth', 2);
xlabel('x');
ylabel('FINAL_WEALTH');
知道我在第一部分代码中做错了什么吗?我想把它写成一个函数,这样我就可以针对不同的文件夹名称多次调用它。
当您从函数 plot
中调用 plot
时,您将得到无穷无尽的递归。重命名您的函数及其文件。
如果您真的想将您的函数命名为"plot"并覆盖内置的-在 plot
函数中,但是 still 希望能够在其中调用 built-in plot
函数,这实际上可以通过使用 builtin
函数调用 plot
的内置版本来实现。您的代码将如下所示:
function X = plot (folderName)
% same code as before
figure;
builtin ("plot", 1:numel(FINAL_WEALTH), FINAL_WEALTH, '-b', 'LineWidth', 2);
xlabel ('x');
ylabel ('FINAL_WEALTH');
end
显然,首先重载这样一个核心函数是否是个好主意是一个完全不同的讨论话题。 (提示:不要!)