Search All of the Math Forum:

Views expressed in these public forums are not endorsed by NCTM or The Math Forum.

Notice: We are no longer accepting new posts, but the forums will continue to be readable.

Topic: SNR script to run using Matlab
Replies: 2   Last Post: Jan 6, 2013 1:03 PM

 Messages: [ Previous | Next ]
 anyone Posts: 26 Registered: 12/22/12
Re: SNR script to run using Matlab
Posted: Jan 5, 2013 11:25 PM

On Fri, 04 Jan 2013 09:27:08 +0000, Wan wrote:
> anyone <ieGJnr4aQXRb!uzEL@z³> wrote in message
> <50e37605\$0\$46968\$c3e8da3\$38634283@news.astraweb.com>...

>> On Tue, 01 Jan 2013 20:41:08 +0000, Wan wrote:
>>

>> > Hi,
>> >
>> > I have a problem to run a script for SNR. Here the details.
>> >
>> > By using the given signal, the signal should be embended with noise
>> > with with different Signal-to-noise ration (SNR) of 0dB, 5dB, 10dB,
>> > 15dB, 20dB, 25 dB and 30 dB. Details of the programming should
>> > include: 1. How SNR of the noisy signal is calculated 2. Comparison
>> > of time domain and Power Spectrum Density (PSD) of original signal,
>> > noisy signal and filtered signal for each SNR.
>> >
>> > Anyone know how to write script for this SNR using given signal?

>>
>> Yes, I can think of a few ways one could do that. First, you should
>> get started on your homework, then come back with an update on what you
>> tried to do and what actually happened.

> Hi,
>
> below is my coding:
>
> %data = ('mydata.mat')
> Fs=100;
> t= 0: 1/Fs: 20;
> signal = S.td;
> x= signal SNR = 0;
> % Generate Gaussian Noise with zero mean and unit variance %function [y]
> x_var=var (x);
> x_lng=length(x)
>
> n_var=x_var/10^(SNR/10);
> noise=n_var*randn(1,x_lng);
>
> %mix signal with noise mix = x+ noise;
>
> %SNR equation %SNR dB= 20 log10 (STDsignal/STDnoise)
> %STDs = std(signal)
> %STDn = std(noise)
> %SNR_measured_dB = 20* log(STDs/STDn)
>
> Fc = 100 ; %cut off frequency
>
> w = Fc/(2*Fs); % Normalized frequency %design a low pass fitler with
> above mentioned specifications [b,a]=butter(2,w,'low'); %5th order
> butterworth LPF [h,w]=freqz(b,a,1024); %Frequency response of the filter
>
> y=filter(b,a,mix); % pass the input signal through the filter % y is
>
> %subplot figure (1)
> figure(1);
> %subplot(4,1,1);
> plot(t, signal);
> title('Input Signal');
>
> %subplot(4,1,2);
> %plot(t, noise);
> %title('Generated Noise');
>
> %subplot(4,1,3);
> figure(2);
> plot(t, mix);
> title(['Signal + Noise for SNR = 30 dB']);
>
> figure(3);
> %subplot(4,1,4);
> plot(t, y);
> title('Filtered Signal');
>
> %Plot the Frequency response of the filter (Optional)
> %subplot(5,1,5);
> figure(4);
> g = length(w/pi*2*Fs)
> i = length(abs(h))
> plotHandle=plot(w/pi*2*Fs,abs(h));
> set(plotHandle,'LineWidth',2.5);
> title('Frequency Response of a 5th Order Butterworth LPF');
> xlabel('Frequency (Hz)')
> ylabel('Magnitude');
> grid;
>
> %plotting psd figure (5)
> %subplot(4,1,1);
> x = signal;
> NFFT = 100;
> X = fft(x, NFFT);
> plot(-NFFT/2:NFFT/2 - 1, fftshift(abs(X)))
> title('PSD Input Signal');
>
> figure(6);
> %subplot(4,1,2);
> v = noise;
> NFFT = 100;
> V = fft(v, NFFT);
> plot(-NFFT/2:NFFT/2 - 1, fftshift(abs(V)))
> title('PSD Generated Noise');
>
> %subplot(4,1,3);
> figure(7);
> w = mix;
> NFFT = 100;
> W = fft(w, NFFT);
> plot(-NFFT/2:NFFT/2 - 1, fftshift(abs(W)))
> title(['PSD Signal + Noise for SNR= 30 dB']);
>
> %subplot(4,1,4);
> figure(8);
> m = y;
> NFFT = 100;
> M = fft(m, NFFT);
> plot(-NFFT/2:NFFT/2 - 1, fftshift(abs(M)))
> title('PSD Filtered Signal');

Bunch of odd stuff in that. Was there some kind of question?

Date Subject Author
1/5/13 anyone
1/6/13 anyone