2014-07-07 17 views
0

我有一段代碼讀取我的數據文件,並在圖形中給出一些光譜。其中一些光譜飽和,我需要將它們排除在我的圖表之外。由於我是網站的新手,因此我無法附上顯示圖表和飽和光譜區域的圖片。使用MATLAB在圖表中排除超出確定閾值的飽和光譜

這是繪製這張照片的命令:

plot(spectra.wavelength(spectrometer.pixel_range)*1e9, 
spectra.smooth_counts(spectrometer.pixel_range,:)); 

我需要確定在Y軸上的閾值(例如:90%的整個Y標尺的[0.9])和寫一個命令,將排除高於閾值的光譜(飽和光譜)。

我非常感謝任何形式的幫助或指導,我面對這個困難,因爲我花了很多時間來解決這個問題。這是我相信的一個命令,我在MATLAB中不太好。

預先感謝您

回答

0

退房的prctile功能。如果我正確讀取它,那麼spectra.wavelength(spectrometer.pixel_range)只是一個值的一維數組,因此您使用prctile來查找閾值,然後創建一個等於或低於該閾值的新的一維數組。

y1 = spectra.wavelength(spectrometer.pixel_range) 
thres = prctile(y1,[90],1); 
y_adjusted = y1((y1(:) <= thres(:))); 

然後你會從那裏開始陰謀。當然這需要一些調整,如果spectral.wavelength(spectrometer.pixel_range)不只是一維數組,那麼您可能想要進一步描述該變量

+0

非常感謝您的回覆。光譜結構內部的波長是256x1倍。光譜儀結構內的pixel_range是1x127的兩倍。 – user3813837

+0

他們不是一維數組。他們是矩陣。 – user3813837

+0

那麼你繪製矩陣的哪一部分?矩陣的哪一部分是你的Y值? – climatefreak