MATLAB矩阵最值是NaN

[复制链接]
查看11 | 回复5 | 2019-3-7 04:59:16 | 显示全部楼层 |阅读模式
我做出一个矩阵,每个元素都有确定的值,但是workspace里的最大值和最小值都为NaN。而且我想用sum对该矩阵求和,其结果也是NaN。为什么呢?麻烦高手解决下。谢谢了!

回复

使用道具 举报

千问 | 2019-3-7 04:59:16 | 显示全部楼层
因为你每次循环都重新对d赋值了,也就是说对每个(i,j),你都先让d=a(2,1);,然后再比较d和a(i,j)。正确的做法是把d=a(2,1);放到循环前面去。
回复

使用道具 举报

千问 | 2019-3-7 04:59:16 | 显示全部楼层
1、M文件最顶端加clear或者主程序里运行之前先clear2、这种错误一般不会是因为sum引起的,估计是生成矩阵过程中运算有误。可以检查一下基本运算是不是都有意义,比如根号和对数下有没有负值,有没有除0等等
回复

使用道具 举报

千问 | 2019-3-7 04:59:16 | 显示全部楼层
NaN在运算中是直接被忽略掉的, 包括取最大值最小值等, Matlab对NaN不予考虑(直接跳过), 除非矩阵中所有元素都是NaN, 输出值才会是NaN.你检查一下你做出来的那个矩阵是不是"纯NaN"矩阵, 在构建矩阵时是否由于某些疏忽导致了除以零的错误等等.
回复

使用道具 举报

千问 | 2019-3-7 04:59:16 | 显示全部楼层
clear一下或者重启matlab
回复

使用道具 举报

千问 | 2019-3-7 04:59:16 | 显示全部楼层
比如矩阵名为AAA=A(:);sum(AA(~isnan(AA)))
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行