Plot 函数以八度重复

Plot 函数以八度重复,plot,octave,Plot,Octave,我的代码写在一个文件“plot.m”中 如果我将以下代码放在“plot.m”中,当我调用plot(“20%”)时,倍频程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.m”中

如果我将以下代码放在“plot.m”中,当我调用plot(“20%”)时,倍频程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”打印数据


你知道我在代码的第一部分做错了什么吗?我想把它写成一个函数,这样我就可以为不同的文件夹名多次调用它。

当你从函数
plot
调用
plot
时,你会得到无休止的递归。重命名函数及其文件。

当您从函数
plot
调用
plot
时,会得到无休止的递归。重命名您的函数及其文件。

如果您确实想将函数命名为“plot”并覆盖内置的
plot
函数,但仍然希望能够调用其中的内置
plot
函数,只需添加Michael的答案即可,这实际上可以通过使用函数调用
绘图的内置版本来实现。您的代码将如下所示:

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”并覆盖内置的
plot
函数,但仍然希望能够调用其中的内置
plot
函数,只需补充Michael的答案,这实际上可以通过使用函数调用
绘图的内置版本来实现。您的代码将如下所示:

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

显然,首先让这样一个核心函数过载是否是一个好主意是一个完全不同的讨论主题。(提示:不要!)

+ahahah,ikr?那只是自讨苦吃!xD+ahahah,ikr?那只是自讨苦吃!除息的