You are on page 1of 10

MATLAB

1)Sine Wave to Square Wave conversion using MATLAB


%60Hz sine wave to 20Hz square wave conversion
clear all;
close all;
clc;
fm=input('enter msg frequency fm=');
fr=input('enter mult frequency fr=');
fs=2000;
t=0:1/fs:0.2;
x=5*sin(2*pi*fm*t);
f=(fm-fr);
y=5*sin(2*pi*t*f);
for i=1:401
if(y(i)>=0)
s(i)=+5
else
s(i)=-5
end
end
subplot(311);
plot(x,'-','linewidth',1);
title('60Hz sine wave','fontsize',12);
xlabel('--->time in 0.5ms');
ylabel('--->Volts');
subplot(312);
plot(y,'g','linewidth',1.5);
title('20Hz sine wave','fontsize',12);
xlabel('--->time in 0.5ms');
ylabel('--->Volts');
subplot(313);
plot(s,'r','linewidth',1.5);
title('20Hz square wave','fontsize',12);
xlabel('--->time in 0.5ms');
ylabel('--->Volts');

RESULT:

2).Amplitude Modulation using MATLAB


%Analog modulation
%fm=100;Am=5;
%fc=1000;Ac=5;
clear all;
close all;
clc;
fm=input('enter msg signal frequency fm=');
Am=input('enter msg signal amplitude Am=');
fc=input('enter carrier signal frequency fc=');
Ac=input('enter carrier signal amplitude Ac=');
fs=100000;
t=0:1/fs:0.1;
m=Am*cos(2*pi*fm*t);
c=Ac*cos(2*pi*fc*t);
subplot(311);
plot(m);
title('input msg signal','fontsize',14);
xlabel('--->time in 10us','fontsize',11);
ylabel('--->Amplitude in Volts','fontsize',11);
subplot(312);
plot(c,'r');
title('input carrier signal','fontsize',14);
xlabel('--->time in 10us','fontsize',11);
ylabel('--->Amplitude in Volts','fontsize',11);
u=Am*0.1;
y=Ac*cos(2*pi*fc*t) + ((u*Ac)/2)*((cos(2*pi*(fc+fm)*t)) +
(cos(2*pi*(fc-fm)*t)));
subplot(313);

plot(y);
title('Output AM signal','fontsize',14);
xlabel('--->time in 10us','fontsize',11);
ylabel('--->Amplitude in Volts','fontsize',11);
OUTPUT:

3). Frequency Modulation using MATLAB


%Frequency modulation
%fm=100;Am=5;
%fc=3000; Ac=5;
clear all;
close all;
clc;
fm=input('enter msg signal frequency fm=');
Am=input('enter msg signal amplitude Am=');
fc=input('enter carrier signal frequency fc=');
Ac=input('enter carrier signal amplitude Ac=');
fs=100000;
t=0:1/fs:0.05;
m=Am*cos(2*pi*fm*t);
c=Ac*cos(2*pi*fc*t);
subplot(311);
plot(m);
title('input msg signal','fontsize',14);

xlabel('--->time in 10us','fontsize',11);
ylabel('--->Amplitude in Volts','fontsize',11);
subplot(312);
plot(c,'r');
title('input carrier signal','fontsize',14);
xlabel('--->time in 10us','fontsize',11);
ylabel('--->Amplitude in Volts','fontsize',11);
B=(500*Am)/fm; % kf=500 < fc
s=Ac*cos(2*pi*fc*t + (B*sin(2*pi*fm*t)));
subplot(313);
plot(s);
title('output FM signal','fontsize',14);
xlabel('--->time in 10us','fontsize',11);
ylabel('--->Amplitude in Volts','fontsize',11);
OUTPUT:

4). Moving Average Filter using MATLAB


%moving average filter
clear all;
close all;
clc;
fs=500000;
fm=10000;
t=1:200;
x=5*cos(2*pi*(fm/fs)*t);
z=awgn(x,5); % adding White Gaussian noise to the input with S/N=5
plot(x,'g','linewidth',1.5);
hold on;
plot(z);
hold on;

for i=1:194;
y(i)=(z(i)+z(i+1)+z(i+2)+z(i+3)+z(i+4)+z(i+6))/6;
end
plot(y,'r','linewidth',1.5);
legend('Actual','Noisy','Filtered');
title('moving Average Filter','fontsize',12);
xlabel('---> time in 2us');
ylabel('---> volts');
OUTPUT:

5). ECG Filtering using MATLAB


GoldStandard.mat Download
% fourth order bandpass filter
% GoldStandard.mat is a preloaded database ECG signal
% the original signal is first combined with gaussian noise
% after noise added the signal will pass through 0.03Hz-1.1Hz
bandpass
% filter,is a 4th order filter
clear all;
close all;
load('GoldStandard.mat')
subplot(211);
plot(signal);
sound('GlodStandard.mat');
title('the original ECG signal');
necg=awgn(signal,1,'measured');
b1=[1 0 -1];
a1=[1 -1.9955735726528454
0.99558400680448189

;
bp1=0.049039538429966834
b2=[1 0 -1];
a2=[1 -1.8603604222618464
;
bp2=0.049039538429966834
subplot(212);
plot(bp2);
title('after filter');
figure
subplot(211);
plot(necg);
title('after noise adding');
subplot(212);
plot(bp1);
title('after 1st section filter');
RESULT:

*filter(b1,a1,necg);
0.87003045759154718
*filter(b2,a2,bp1);

6). Analog-to-Digital and Digital-to-Analog conversion using


MATLAB
Here we add some Gaussian noise to the input sine wave and
then will will convert that to digital signal. This digital signal sampled
data will be used in Modelsim. In the modelsim we develop moving
average filter using VHDL, this will filters the sampled data and writes
into another file. Using the new updated sampled data we will
regenerate
the
Analog
signal.

%ADC & DAC


clear all;
close all;
clc;
fs=500000; % taking sampling frequency as 500kHz
fm=10000; % input signal frequency 10kHz
t=1:200;
% displaying 200 samples
x=5*cos(2*pi*(fm/fs)*t); %input sinusoidal signal
z=awgn(x,1);% adding white Gaussian noise to the input signal with
S/N=1
h=1:1000;
plot(t,x,'g','LineWidth',2); % plotting input signal
hold on;
plot(t,z,'r','linewidth',1.5); % plotting noisy signal

hold on;
stem(t,z);
hold on;
Vd=-5:0.0390625:5; % step size =0.0390625, when n=8 bits
for i=1:256
Vdelta(i)=(Vd(i)+Vd(i+1))/2; % Quantization levels
end
i=0:255;
binary= dec2bin(i); % decimal to binary conversion
% Quantization of input signal
for i=1:200
for j=1:256
if(z(i)< Vd(1))
z(i) = Vdelta(1);
end
if (z(i) > Vd(257))
z(i) = Vdelta(256);
end
if(z(i) <= Vd(j+1) && z(i) >= Vd(j))
z(i) = Vdelta(j);
end
end
end
% Encoding the Quantized data
for i=1:200
for j=1:256
if (z(i)==Vdelta(j))
B_data(i,1:8) = binary(j,1:8);
end
end
end% representing binary data in decimal
figure
for i=1:200
B(i)=bin2dec(B_data(i,1:8));
end
% First solution; writing Encoded data into ADC.txt file. The we will
perfom
% Moving average filter operation in VHDL
f = fopen('ADC.txt', 'w');

for n = 1:200
fprintf(f, '%s\n', B_data(n,1:8));
end
fclose(f);
subplot(221);
plot(x);
title('original sinwave','fontsize',12);
xlabel('--->time in 2us');
ylabel('--->amplitude in volts');
subplot(222);
plot(z);
title('noise signal','fontsize',12);
xlabel('--->time in 2us');
ylabel('--->amplitude in volts');
% After the moving avg filter the filtered data has been written to
vhdl_out.txt file
f=fopen('vhdl_out.txt','r');
A = fscanf(f,'%g',[1 inf]);
fclose(f);
subplot(224)
plot(B)
title('signal with white gaussian noise','fontsize',12);
xlabel('--->time in 2us');
ylabel('--->amplitude in decimal');%Digital to Analog conversion
for i=1:192
for j=1:256
if(A(i)== j )
outpt(i)=Vdelta(j);
end
end
end
subplot(223);
plot(outpt);
title('filtered sine wave sinewave output','fontsize',12);

xlabel('--->time in 2us');
ylabel('--->amplitude in decimal');

RESULT:
Output data files Download

You might also like