我怎么才能将矩阵中的NaN去掉 用matlab?

我的矩阵是这样的[ 1,2,nan,nan,3,nan
1,2,nan,nan,3,nan
1,2,nan,nan,3,nan
1,2,nan,nan,3,nan]

>> a = [1 nan 2];
>> b = find(~isnan(a));
>> res = a(b)追问

谢谢你 能不能指点一下find函数要怎么用?

温馨提示:内容为网友见解,仅供参考
无其他回答

我怎么才能将矩阵中的NaN去掉 用matlab?
>> b = find(~isnan(a));>> res = a(b)

matlab 如何删除矩阵中的NaN值?
可以通过find函数来搞定。可以通过importdata('data.txt')将数据文件data.txt导入数组A中。A=importdata('data.txt')然后通过命令 z=find(~isnan(A))将A数组中NaN所在的编号给找出来;B=A(z)就可以将A中所有的NaN值剔除掉了,如果希望得到非NaN值的编号,那么z就是了!如果只求将A中NaN值去掉,...

一招删除数组中所有NaN缺失项-每天一个MATLAB小技巧(32)
1. **rmmissing(A)**:此命令从数组或表A中删除所有包含NaN的元素。当A为向量时,它会移除所有出现的NaN值。对于矩阵或表而言,它会移除包含任何NaN值的行。例如,如果有一个数组A = [1, NaN, 3, NaN, 5],那么使用rmmissing(A)后,结果将是 [1, 3, 5]。2. **rmmissing(A, dim)**...

怎么避免在matlab中矩阵运算出现NaN呀? 我是在用雅可比迭代法计算一...
x=D\\((D-A)*x+b),即x每次迭代后仍为0可知,x始终为0,没有问题。b去ones(20,1)的时候,x出现NaN只可能由于这一句x=D\\((D-A)*x+b)的分母为0,即某次迭代的时候出现判断 (diag(diag(A))-A)*x==-b,返回值为1。但是按理来说这样迭代是不会出现这种情况的,所以请尝试将循环部...

Matlab中,怎样能去除向量或矩阵中的NaN和0元素,但又不改变其它元素的索...
要找最小的元素的时候,可以将对应的数给为inf,那么这些数肯定排在最大 数据足够多的时候,前100个数肯定就没有它们的身影 例如在C中忽略nan,找前100个最大的数 D=C;D(isnan(D))=-inf;sD=sort(D,'descend'); %降序排序 Result =sD(1:100);不用用到索引 要忽略某些值,只要让那些...

Matlab出现nan怎么处理
1)你的程序里出现0作为分母的运算,这个时候可以考虑把被除矩阵整体加一个无限小量,例如1e-10。这样可以消除0作分母的现象。2)如果上面这个做法不管用,一般就是你自己的算法和编程的问题了,导致结果不收敛,发散。多次迭代后无穷大,超过了matlab允许的数值范围。这个时候你必须去仔细检查你的程序了...

求助:怎么避免matlab矩阵计算后出现NAN
最简单的方法将将矩阵正则化,也就是将这个矩阵加上一个较小的数量阵之后可解决这一问题,也就是A=A+kI的形式,其中A是原矩阵,k是一个较小的数,I是单位矩阵。但是这种方法是对所有对角元都加上了一个同样的数,具有全局影响。而你的问题中对角矩阵求逆出现这个问题估计是因为有一些对角元太小...

matlab 怎么把矩阵中所有nan去掉
这个问题问的有点问题。如果是一维的,a(a==0)=[]就能解决问题如果是多维的,a(a==0)=[]会把a变成一维的,然后结果类似于上面的结果。原因是每行每列中的0的个数不同,无法保持多维的样子,只能拉长了当成一维处理。a=4442240322212433054410014>>a(a==0)=[]a=Columns1through...

matlab用interp2方法进行插值消除nan的问题
用griddata插值是可以解决问题的 b =[2 NaN NaN 1 NaN 2 1 1 2 NaN 1 NaN];s=size(b);ind=find(~isnan(b));[i j]=ind2sub(s,ind);v=b(ind);[ii jj]=ndgrid(1:s(1),1:s(2));ib=griddata(i,j,v,ii,jj);不过注意,在角点的nan值是不能消除...

如何将matlab矩阵中的NaN替换成0
数据矩阵x x(find(isnan(x)==1)) = 0 或:[datas,features]=size(data);for k=1:features for i=1:datas if data(i,k)==0 data(i,k)=mean(data(:,k));elseif isnan(data(i,k))==1 data(i,k)=mean(data(:,k));end end end ...

相似回答