Igor Pro 完全可以處理缺失值或空值(missing values / NaNs)。它內(nèi)置了對(duì)“缺失值”的識(shí)別、替換、跳過與插值等功能,適用于科學(xué)計(jì)算和數(shù)據(jù)分析中常見的不完整數(shù)據(jù)情況。
提供Igor軟件免費(fèi)下載,還有Igor學(xué)習(xí)交流群,需要請(qǐng)加微信15301310116。
一、Igor Pro 如何表示缺失值?
Igor Pro 用一個(gè)特殊的 IEEE 浮點(diǎn)數(shù)表示缺失值,即:
NaN // Not a Number
任何一個(gè) wave 中的元素都可以是 NaN。你可以通過命令或編程方式將數(shù)值設(shè)為 NaN,也可以識(shí)別、處理這些值。
二、常見操作示例
1. 設(shè)置為缺失值
將某個(gè)波形中的第 5 個(gè)點(diǎn)設(shè)為缺失值:
wave1[4] = NaN
或者將所有小于 0 的值設(shè)為 NaN:
wave1 = (wave1 < 0) ? NaN : wave1
2. 識(shí)別缺失值
你可以使用 isNaN() 函數(shù)判斷某個(gè)值是否是 NaN:
if (isNaN(wave1[3]))
Print "該點(diǎn)是缺失值"
endif
3. 跳過缺失值進(jìn)行計(jì)算
很多 Igor 內(nèi)置函數(shù)(如 mean(), stats, interpolate1D, smooth)自動(dòng)跳過 NaN,但如果你要手動(dòng)處理,可以結(jié)合 isNaN() 篩選有效數(shù)據(jù)。
例如計(jì)算有效點(diǎn)的平均值:
Variable sum = 0, count = 0
for (i = 0; i < numpnts(wave1); i += 1)
if (!isNaN(wave1[i]))
sum += wave1[i]
count += 1
endif
endfor
Variable avg = sum / count
4. 插值填補(bǔ)缺失值
Igor 支持線性插值,也能用樣條插值、擬合等方式填補(bǔ) NaN 值。常用方法是用 Interpolate1D 插值函數(shù)。
Duplicate/O wave1, filledWave
Interpolate1D filledWave, wave1, mode=1
這將用線性方法對(duì) wave1 中的 NaN 進(jìn)行插值并生成 filledWave。
5. 刪除含缺失值的點(diǎn)
你可以新建一個(gè)只包含有效點(diǎn)的波形:
Make/O/N=(sum(!isNaN(wave1))) cleanWave
Variable j = 0
for (i = 0; i < numpnts(wave1); i += 1)
if (!isNaN(wave1[i]))
cleanWave[j] = wave1[i]
j += 1
endif
endfor
三、圖形繪制中的表現(xiàn)
如果波形中含有 NaN,繪圖時(shí)這部分會(huì)斷開,不會(huì)連接成線;
這在處理“缺測”、“斷點(diǎn)”、“空窗期”等數(shù)據(jù)時(shí)非常實(shí)用;
可以利用這個(gè)機(jī)制手動(dòng)插入 NaN 來斷開線條以實(shí)現(xiàn)分段繪圖效果。
以上是深圳市理泰儀器有限公司小編為您講解的Igor Pro 能否處理缺失值或空值,想要咨詢Igor軟件其他問題請(qǐng)聯(lián)系15301310116(微信同號(hào))。