matlab除去NaN空值,並且保證矩陣一定的形狀的方法

一,起源
由於導入excel文件數據的時候,空數據部分會被NaN代替,所以我就想用一種辦法刪除掉這些NaN。我看見的一種辦法是:b=a(~isnan(a));這種辦法確實能刪除NaN,但是會把原來的數組變成列向量,損壞了原來的結構。

在結構不遭破壞的基礎上,刪除掉NaN的位置。此方法需要保證對於每列而言,NaN所在的行索引是相同的。爲保證這個條件在導入前需要觀察數據分佈。

二,思路及編程
假設我們要處理的矩陣是num
b=num(:,1);%取第一列b
b=b(~isnan(b));%將b中的NaN刪除。
n=length(b);%統計剩下多少行,由於是第一列的緣故,不害怕它變形。
num=num(~isnan(num));%對整個矩陣num,將NaN部分刪除,得到列向量
num=reshape(num,n,(length(num)/n));%重塑矩陣,它有n行,length(num)/n列

發佈了17 篇原創文章 · 獲贊 4 · 訪問量 5554
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章