Effacer les filtres
Effacer les filtres

Info

Cette question est clôturée. Rouvrir pour modifier ou répondre.

Dear fellows i am working on visible light communication and i removed frequency in the range of 3-200 HZ becuase of noise .Will you please do some modification in my code so that in last figure in time domain i use filter which does not remove noi

1 vue (au cours des 30 derniers jours)
imran khan
imran khan le 22 Oct 2019
Clôturé : MATLAB Answer Bot le 20 Août 2021
clc,close all,clear all
codn=70;
% fc=6e+3;
fs=3600;
bode=10;
code=round(rand(1,codn));
code_len=round(1/bode/(1/fs))
for ii=1:codn
x((ii-1)*code_len+1:code_len*ii)=code(ii);
end
x2 = x-(1/2) % get rid of most of the dc peak
% set up time and frequency arrays
N = length(x);
delt = 1/fs;
delf = fs/N
tvec = (1:N)*delt
fvec = (-N/2:N/2-1)*delf ; % shifted frequency array
figure(1)
plot(tvec,x2(1,:)+0.5)
title('orignal baseband')
xlabel('time');
ylabel('amplitude')
ylim([-1 1.5]);
y = fftshift(fft(x2)/N);
z=abs(y);
figure(2)
plot(fvec,abs(y))
title('FFT')
xlabel('frequency')
ylabel('amplitude')
figure(3)
z=y;
z(abs(fvec)>=3 & abs(fvec)<=200)=0
plot(fvec,abs(z))
xlabel('frequency removed from 3 to 200 HZ');
ylabel('amplitude')
figure(4)
zf=fftshift(z)*N;
zifft=ifft(zf)+0.5
plot(tvec,abs(zifft))
ylim([-1 1.5])
title('recovered signal')
xlabel('time');
ylabel('amplitude')
figure(5)
x2 = medfilt1(abs(zifft),70); % Filter with median filter
plot(tvec,x2)
title('Filtered Signal with median filter ')
xlabel('time ');
ylabel('amplitude ')
ylim([-1 1.5]);
  5 commentaires
Daniel M
Daniel M le 22 Oct 2019
Modifié(e) : Daniel M le 22 Oct 2019
No it's not clear. You're saying you want to remove noise from the signal in the plot "Filtered signal with median filter"? Can you indicate what you consider the noise to be in this signal? Looks pretty clean to me.
Also, and I've told you this before, it should be
zf=ifftshift(z)*N;
I've also asked you this before, but what do you want to do with the values of x outside of [0 1] range? Some suggestions: 1) clip values to the value at the boundary 2) take the reflection of the values about the boundary (like an absolute value) 3) normalize x to be within 0 and 1
And please post code using the "code" button so it is easier to read as well as copy/paste.

Réponses (0)

Cette question est clôturée.

Community Treasure Hunt

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

Start Hunting!

Translated by