matlab中去除含有NaN的行或者列
程序员文章站
2022-05-23 08:22:22
今天在用matlab的时候又积累了两点,现在总结如下
1、Objective function is undefined at initial point. Fmincon cannot...
今天在用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的非零列,大家就自己会写了。
上一篇: 大数据List去重
推荐阅读
-
matlab中去除含有NaN的行或者列
-
python中如何设置jupyter notebook的显示,完全显示输出结果的行或者列?
-
删除DataFrame中值全为NaN或者包含有NaN的列或行方法
-
删除DataFrame中值全为NaN或者包含有NaN的列或行方法
-
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
-
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数
-
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
-
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
-
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数
-
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。