> 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;
So, you acquire your signal vector from a struct, but you don't offer any other detail about it. Absent that detail, how do you propose to establish noise power level? Absent that, how would you go about establishing the target SNR values (per the assignment)?
> 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);
Usually, we want a specified noise distribution, with a target variance and around some mean value. It's not clear to me why you want to derive a basis of that from statistics of the signal, but it won't matter as long as you can show that statistics of noise otherwise match requirements of the assignment.
[comment lines snipped]
> %mix signal with noise > mix = x+ noise;
> 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
No, "butter(2,w,'low')" returns numerator and denominator coefficients for a 2nd-order LPF, based on the Butterworth approximation.
Seems to me you have quite a bit of research to do.