How can we threshold a signal in both positive and negative sides?

조회 수: 11 (최근 30일)
I have a signal with values in both positive and negative sides. I want to threshold in both sides. I have used this code:
threshold=0.5
for i=1:length(signal)
if signal>threshold && -signal>0.5
signal_new(i)=signal
else
signal_new(i)=0
end
end
But I got signal with only positive side. Can anyone help me with thresholding at both sides?

채택된 답변

Star Strider
Star Strider 2022년 9월 16일
I am not certain what you want as the result.
The for loop and if block are not necessary. You can do this with logical indexing. The logical indexing here are:
(signal_new >= threshold)
(signal_new <= -threshold)
Try this —
Fs = 256;
t = linspace(0, 1000, 1001)/Fs;
signal = sin(2*pi*t*2);
threshold = 0.5;
signal_new = signal;
signal_new(signal_new >= threshold) = threshold;
signal_new(signal_new <= -threshold) = -threshold;
figure
plot(t, signal)
hold on
plot(t, signal_new)
hold off
grid
xlabel('Time')
ylabel('Amplitude')
legend('Original','Threshold', 'Location','best')
.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Smoothing and Denoising에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by