我有一个小的MATLAB函数,我试图通过从命令行调用它来运行,如下所示:
>> [x, y , true_HF, max_F]=main (10)
然而,在运行时,我最终得到一个错误:
??? Input argument "HF" is undefined.
在网上搜索已经产生了一堆结果让人们忘记了这个论点,我不相信我在做什么(我对这个东西不熟悉)。
供参考,我的“主要”功能:
function [ x, y, true_HF, max_F ] = main(HF)
global Data
Data = [];
close all
true_HF = fzero ( diff_L, HF );
[x,y] = find_xy ( true_HF );
final_graphs()
max_F = max_force ( y, true_HF );
end
此外,在违规行之前的“whos”(即“true_HF = fzero(diff_L,HF);”)表示变量HF已设置。
那些知道我做错了什么的MATLAB天才?
答案 0 :(得分:0)
也许在path上有更高级别的其他功能:
>> which main -all
答案 1 :(得分:0)
以下是三个尝试的想法:
首先,我偶尔遇到一个问题,即从命令行调用的函数是以前的版本。确保您已保存文件。例如,如果您最初使用第一行编写文件
function [ x, y, true_HF, max_F ] = main(other_variable, HF)
您必须保存以调用main(10),否则您将收到未定义的HF消息
第二种可能性:如果您已重新保存它,请检查以确保您正在编辑的副本位于命令窗口的当前目录中。将具有相同名称的多个函数分隔到不同的文件夹中可能会导致一些意外行为。如果您正在使用〜/ new_function / main.m以及〜/ old_function / main.m,请记住这一点。
最后,您可以通过进行以下更改来检查对fzero的调用是否有效,仅用于测试目的:
function [ x, y, true_HF, max_F ] = main(HF)
%% <- "%%" starts a new cell in the program
HF = 10 % type this in for testing purposes
% commented out because we are going to evaluate the code inside the current workspace
% global Data
% Data = [];
close all
true_HF = fzero ( diff_L, HF ); % diff_L will have to be in the current workspace variables
[x,y] = find_xy ( true_HF );
final_graphs()
max_F = max_force ( y, true_HF );
%% <- end the cell
end
现在,将光标置于两个“%%”符号之间,按ctrl-return。这将评估单元格中的代码(两个“%%”之间的代码)。
告诉我们您的进展情况。
- 安德鲁