赞
踩
警告:矩阵接近奇异值,或者缩放错误。结果可能不正确。
实验中遇到奇异值警告时,想要捕获该警告,跳出该层循环不再执行后续程序,并且在结果中记录警告
matlab官方文档其实给出了一些关于错误的处理方式
但是由于我这里想要捕获的警告不是自己定义的,而是在计算过程中系统自己发出来的,所以我采取了比较综合的方式:
示意代码:
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 else end end %将结果记录在txt中 if error==1 fp=fopen('results.txt','a+'); fprintf(fp,'i:%d, j:%d, warnID:%s, msg1:%s\n', i, j, warnID, msg1); fclose(fp); else fp=fopen('results.txt','a+'); fprintf(fp,'i:%d, j:%d, results:%f\n', results); fclose(fp); end
为了方便处理结果(避免电脑自动更新或停电带来的沉痛教训),我选择将结果直接保存至txt文件中,如果有更好的方法欢迎大家指点~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。