使用MATLAB在图表中排除高于确定阈值的饱和光谱

时间:2014-07-07 20:11:43

标签: matlab

我有一个代码可以读取我的数据文件并在图表中给我一些光谱。其中一些光谱已经饱和,我需要将它们排除在图表之外。我无法附上显示图表的图片和图表中的饱和光谱区域,因为我是网站的新手。

这是绘制这张图片的命令:

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

我需要确定Y轴上的阈值(例如:整个Y标度的90%[0.9])并写入一个命令,将排除高于阈值的光谱(饱和光谱)。

我非常感谢我遇到这种困难的任何帮助或指导,因为我花了很多时间来解决这个问题。这是一个我相信的命令问题,我在MATLAB中表现不佳。

提前谢谢

1 个答案:

答案 0 :(得分:0)

查看prctile功能。如果我正确读取它,则spectrum.wavelength(spectrometer.pixel_range)只是一维值数组,因此您使用prctile来查找阈值,然后创建一个等于或低于该阈值的新1D数组。 / p>

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

然后你会从那里开始。当然,如果spectra.wavelength(spectrometer.pixel_range)不仅仅是一维数组,则需要进行一些调整,因此您可能希望进一步描述该变量