How can we threshold a signal in both positive and negative sides?
12 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
BIPIN SAMUEL
am 16 Sep. 2022
Beantwortet: Star Strider
am 16 Sep. 2022
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?
0 Kommentare
Akzeptierte Antwort
Star Strider
am 16 Sep. 2022
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 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Denoising and Compression finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!