如何在one.m fine(Matlab)中将函数与其他代码组合
如果我将上述代码的不同.m文件中的两个部分分开,它就可以工作。然而,当我 将它们组合在一起,Matlab显示: 错误:文件:find_root.m行:11列:14 无法定义具有重复名称find_root的函数 因为我想在for循环中将e从0设置为1,所以我不能按以下方式添加参数如何在one.m fine(Matlab)中将函数与其他代码组合,matlab,function,Matlab,Function,如果我将上述代码的不同.m文件中的两个部分分开,它就可以工作。然而,当我 将它们组合在一起,Matlab显示: 错误:文件:find_root.m行:11列:14 无法定义具有重复名称find_root的函数 因为我想在for循环中将e从0设置为1,所以我不能按以下方式添加参数 clear all; close all clc e = .25; %fun = @find_root; z = fzero(fun,1) yy = z+.5^2*z/e-z^3/e %===============
clear all;
close all
clc
e = .25;
%fun = @find_root;
z = fzero(fun,1)
yy = z+.5^2*z/e-z^3/e
%=================================
function y = find_root(x)
y1 = x+0.5^2*x/e-x^3/e;
y = -e*x + e*y1 +.5^2*y1-y1^3
end
这就是为什么我必须将这两个部分合并到一个.m文件中
如何修复它 好吧,这里有一些问题。首先是你的错误: 错误:文件:find_root.m行:11列:14无法定义具有重复名称find_root的函数 当您为文件指定与脚本中包含的函数相同的名称时,就会出现这种情况。我建议你换成别的东西,例如calc_yy.m。除此之外,您应该使用所需的输入fun=@xfind_rootx,e;是一个带有输入x的函数句柄。另外需要注意的是将e作为函数的参数。如果在定义函数y=find_rootx,e和函数handle fun=@xfind_rootx,e;,中未包含e作为函数参数;,那么您前面定义的e将超出函数的范围。以下代码对保存为test.m的我来说运行良好: 祝你在未来的MATLAB工作中好运,永远不要为这样的错误感到愚蠢,我们都曾在某些时候犯过这样的错误
z = fzero(fun(x,e),1)
%% Script
clear all
close all
clc
e = .25;
fun = @(x)find_root(x,e);
z = fzero(fun,1);
yy = z+.5^2*z/e-z^3/e;
%% Functions
function y = find_root(x,e)
y1 = x+0.5^2*x/e-x^3/e;
y = -e*x + e*y1 +.5^2*y1-y1^3;
end