Date: Jan 5, 2013 11:25 PM
Author: anyone
Subject: Re: SNR script to run using Matlab

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:
>
> %<--- LOAD SIGNAL (FILENAME:mydata.mat)
> %data = ('mydata.mat')
> Fs=100;
> t= 0: 1/Fs: 20;
> S = load('mydata.mat');
> signal = S.td;
> x= signal SNR = 0;
> % Generate Gaussian Noise with zero mean and unit variance %function [y]
> = add_noise (signal, SNR)
> 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
> your output.
>
> %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?