Info

This question is closed. Reopen it to edit or answer.

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 view (last 30 days)
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 Comments
Daniel M
Daniel M on 22 Oct 2019
Edited: Daniel M on 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.

Answers (0)

Community Treasure Hunt

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

Start Hunting!