matlab捕获奇异值警告(函数lastwarn,warning)

更新时间:2023-05-20 15:59:29 阅读: 评论:0

matlab捕获奇异值警告(函数lastwarn,warning)
实际问题:
警告:矩阵接近奇异值,或者缩放错误。结果可能不正确。
实验中遇到奇异值警告时,想要捕获该警告,跳出该层循环不再执⾏后续程序,并且在结果中记录警告
解决⽅法:
matlab官⽅⽂档其实给出了⼀些关于错误的处理⽅式
朱慈炤
但是由于我这⾥想要捕获的警告不是⾃⼰定义的,⽽是在计算过程中系统⾃⼰发出来的,所以我采取了⽐较综合的⽅式:
1. 选取函数lastwarn()捕获最后⼀条警告信息(注意:这⾥说的最后⼀条警告信息是全局的,假设代码中设置每⼀次循环都⽤
lastwarn去捕获警告信息,若某⼀个参数设置下出现了警告A,使⽤lastwarn捕获A,但是在下⼀个参数设置中即便程序本⾝没有错误,但是lastwarn仍然会捕获到A;亦或是程序本⾝就不会出现警告,但是lastwarn还可以捕获在程序运⾏之前出现的警告信息)
2. 利⽤函数warning()在循环前⾯输出⼀个事先定义的不相关的警告
3. 将lastwarn捕获到的信息与事先定义的信息进⾏⽐较(也可以通过其他⽅式进⾏⽐较),如果长度不⼀致则跳出循环(根据实际需要
决定需要跳出⼏层循环),反之代表没有警告出现,继续进⾏实验
⽰意代码:
for i=1:10
for j=1:10
warning('off');%不在命令⾏显⽰警告信息
msg=char('Message 1.');%⾃定义警告信息
warning('Message 1.');%输出⾃定义警告信息
error=0;%每次确定参数后,error归0
***
(主要代码)
糖醋心里美
***
[msg1, warnID]=lastwarn;%捕获最新⼀条警告信息
if length(msg1)~=length(msg) %判断最新⼀条警告信息是否和⾃定义的警告信息⼀致
error=1; %如果两条警告信息不⼀致,说明出现了新的警告,error置1并跳出循环
二元化云南腾冲有哪些旅游景点
break女子八百米加油稿
居委会几点上班
el
end
end
%将结果记录在txt中
if error==1
fp=fopen('','a+');
fprintf(fp,'i:%d, j:%d, warnID:%s, msg1:%s\n', i, j, warnID, msg1);
fclo(fp);
el
fp=fopen('','a+');
什么的秋天
fprintf(fp,'i:%d, j:%d, results:%f\n', results);
fclo(fp);
科普类
end
为了⽅便处理结果(避免电脑⾃动更新或停电带来的沉痛教训),我选择将结果直接保存⾄txt⽂件中,如果有更好的⽅法欢迎⼤家指点~

本文发布于:2023-05-20 15:59:29,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/920409.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:警告   信息   出现   捕获
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图