matlab定义函数却出错,求助,Matlab单个自定义函数运行无错,但被调用时会出错...

在MATLAB中遇到自定义函数被调用时出现错误的问题,具体表现为在函数`NT`中计算雅可比矩阵并进行求逆操作时程序报错。检查代码发现,可能的原因是矩阵不规则导致的逆运算失败。解决方案可能包括检查输入参数的正确性,确保矩阵可逆,并优化数值稳定性。
摘要由CSDN通过智能技术生成

我在做毕业论文时,调试程序时,也遇到了与楼主相类似的问题,我把代码贴出来:各位高手大侠看看点评一下:

function [xmin,funval]=TR(fun,x0,delta0,x)

delta=delta0;

eps=1.0e-4;

n=length(x0);

H=eye(n);

mu=0.25;

yita=0.75;

normg=1;

while normg>eps

fx=subs(fun,x,x0);

gradfun=jacobian(fun,x);

g=subs(gradfun,x,x0);%g为行向量

normg=norm(g);

[s,fs]=trustP(fun,g,H,delta,x,s0);%s应该为行向量

x1=x0+s;%x1为列向量

fx1=subs(fun,x,x1);

rho=(fx-fx1)/(-fs);

if rho>yita

x0=x0+s;%x0为列向量

else

x0=x0;

end

if rho<=mu

delta=0.5*delta;

else

if rho>=yita

delta=2*delta;

else

delta=delta;

end

end

g1=subs(gradfun,x,x1

要查看MATLAB的详细错误信息,可以使用以下方法: 1. 查看命令行窗口:当MATLAB遇到错误时,错误消息通常会在命令行窗口中显示。这些消息包含错误的描述和可能的原因,如越界错误、语法错误或函数调用错误。查看这些消息可以帮助你了解更多关于错误的细节,以及如何解决它们。 2. 使用MException对象:MATLAB中的MException处理类可以帮助捕获和显示详细的错误信息。当发生错误时,MATLAB会在MException类中创建一个异常对象,其中包含有关错误的详细信息。可以使用try-catch块来捕获异常并访问异常对象。使用异常对象的message属性可以获取错误消息的详细描述。 以下是一个示例代码: try % 你的代码 catch ME fprintf('发生错误:%s\n', ME.message); end 这段代码将执行你的代码,如果出现错误,将捕获异常并打印错误消息。 3. 在调试模式下运行程序:在调试模式下运行程序可以让你逐步运行代码并检查变量和语句的值。当程序发生错误时,调试器会在错误位置停下来,并显示详细的错误信息,包括错误类型、错误消息和错误发生的行号。 你可以通过在编辑器中设置断点,然后单步执行代码来进入调试模式。使用调试工具栏中的“运行”按钮来逐步执行代码并查看变量的值和错误信息。 这些是查看MATLAB详细错误的几种常用方法。根据错误的类型和具体情况,选择合适的方法可以帮助你快速定位和解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值