当前位置: 移动技术网 > 科技>人工智能>云计算 > matlab中去除含有NaN的行或者列

matlab中去除含有NaN的行或者列

2018年03月23日  | 移动技术网科技  | 我要评论

今天在用matlab的时候又积累了两点,现在总结如下

1、Objective function is undefined at initial point. Fmincon cannot continue.错误解决

在使用fmincon时出现该错误很有可能是你求解的输入矩阵里面存在了非数字的值,例如nan等,请仔细检查输入的参数矩阵是否含有nan等,如果有就要去掉。

2、那么如何去掉矩阵里面含有nan的行或者列呢?

去掉某一个位置上的nan比较容易,但是去掉nan所在的行或者列的话机比较难想了,前提是你对matlab用的不是很熟,如果很熟悉的话就另当别论。

不废话,直接说出解决办法,加入有矩阵

A=[1,2,NaN;

3,NaN,4;

5,6,7 ]

如果你是一行表示一个样本的话,那么第一行和第二行就得剔除,因为它们的特征值含有NaN。

只要一句代码就可以完成了

A=(all(~isnan(A),2),:);

(1)就这么简单,其中里面用到了all函数,all(A,2)的意思是如果A的某行没有非零值,那么改行返回值为1,如果改行包含了非零值,则改行返回值为0,最终返回一个列向量。每一个元素表示A的某行是否都是非零值。1表示某行全部是非零值,0表示不是。i

(2)isnan就不用介绍了,自行百度

(3)和all相同的用法还有any,也可以改用any来做,提取不含Nan的非零列,大家就自己会写了。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网