我的代码写在一个文件" plot.m"。
如果我将以下代码放入" plot.m",当我调用plot(" 20%")时,Octave GUI将继续打开一个新窗口无限期地说。
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');
知道我在第一段代码中做错了什么吗?我想把它写成一个函数,这样我就可以多次调用它来获取不同的文件夹名称。
答案 0 :(得分:3)
当你从函数plot
调用plot
时,你会得到无穷无尽的递归。重命名您的函数及其文件。
答案 1 :(得分:3)
只是添加迈克尔的答案,如果真的想要将您的功能命名为“plot”并覆盖内置的plot
功能,但< em>仍然希望能够在其中调用内置 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
显然,首先重载这样一个核心功能是一个好主意是一个完全不同的讨论主题。 (提示:不要!)