Я пытаюсь создать шум в спектре с высокой выборкой, удалив все острые пики и затем выполнив кусочно-кубическую сплайн-интерполяцию с сохранением формы, чтобы сохранить как можно больше информации о спектре.Однако я не могу очистить все пики, включая один пик в начале.Чего мне не хватает - я к этому мудро подхожуКстати, у меня есть несколько из этих спектров, которые мне нужно обработать.Большое спасибо за любой ввод заранее !!
Используемые данные сигнала находятся здесь .
Попытка
minval = 0;
maxval = 950;
figure();
plot(lambda, SI, '-')
xlabel('Wavelength')
ylabel('Signal Intensity')
ylim([minval maxval])
title('Original signal')
ind_min = find(SI <= minval);
ind_max = find(SI >= maxval);
lambda([ind_min.', ind_max.']) = [];
SI([ind_min.', ind_max.']) = [];
figure();
plot(lambda, SI, '-')
xlabel('Wavelength')
ylabel('Signal Intensity')
ylim([minval maxval])
title('Signal after removing all values above 950')
% Define threshold representing 25th percentile difference between signal values
diffSI = abs(diff(SI));
thres = quantile(diffSI, 0.25);
%% Remove all sharp peaks
% Remove all signal values differing from neighbouring values above
% computed threshold and replace their values estimated by
% shape-preserving piecewise cubic spline interpolation
for i = 2:(length(SI) - 1)
if abs(SI(i) - SI(i+1)) > thres
SI(i) = NaN;
SI(i+1) = NaN;
elseif abs(SI(i) - SI(i-1)) > thres
SI(i) = NaN;
SI(i-1) = NaN;
end
end
SI = fillmissing(SI, 'pchip');
figure()
plot(lambda, SI, '-')
xlabel('Wavelength')
ylabel('Signal Intensity')
ylim([minval maxval])
title('Signal after interpolation')