📄 ejemplo2.m
字号:
clc
clear all;
close all;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% LECTURA DE ARCHIVO DE AUDIO
y = wavread('D:\El韁Wav\kamel1.wav',20000); % EN "y" SE GUARDA EL ARCHIVO .WAV
y1=(y*4)+4; % SE AUMENTA LA AMPLITUD CUATRO VECES
a=length(y1); % EN "a" SE GUARDA LA LONGITUD DEL VECTOR
% QUE CONTIENE EL ARCHIVO LEIDO
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% CONVERSI覰 ANAL覩ICO-DIGITAL
j=a*3;
vectorsote=zeros (1,j); % SE GENERA UN NUEVO VECTOR, INICIALIZADO EN CEROS
% Y DE 3 VECES LA LONGITUD DE "y1",
% DADO QUE SE USARA UNA CONVERSION
% DE ANALOGICO-DIGITAL DE 3 BITS
for b=1:a;
if (y1(b)>=0)&&(y1(b)<=0.5);
y2(b)=0;
temp=[0 0 0];
elseif (y1(b)>0.5)&&(y1(b)<=1.5);
y2(b)=1;
temp=[0 0 1];
elseif (y1(b)>1.5)&&(y1(b)<=2.5);
y2(b)=2;
temp=[0 1 0];
elseif (y1(b)>2.5)&&(y1(b)<=3.5);
y2(b)=3;
temp=[0 1 1];
elseif (y1(b)>3.5)&&(y1(b)<=4.5);
y2(b)=4;
temp=[1 0 0];
elseif (y1(b)>4.5)&&(y1(b)<=5.5);
y2(b)=5;
temp=[1 0 1];
elseif (y1(b)>5.5)&&(y1(b)<=6.5);
y2(b)=6;
temp=[1 1 0];
elseif (y1(b)>6.5)&&(y1(b)<=7.5);
y2(b)=7;
temp=[1 1 1];
else (y1(b)>7.5)&&(y1(b)<=8);
y2(b)=7;
temp=[1 1 1];
end
k=(b-1)*3;
temporal=[zeros(1,k), temp, zeros(1,j-(3*b))];
vectorsote=vectorsote+temporal; %AQUI SE LLENA EL
%VECTOR QUE
%CONTIENE LA CADENA
%DE BITS
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% MODULACI覰
M=2;
c=dpskmod(vectorsote,M,pi/4);
t=1:j;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% SE袮L DE RUIDO
%y22= wavread('D:\El韁Wav\Whitenoisesound.wav',j);
y23=randn(1,j); %SE GENERA UNA SE袮L
yy=y23/1; %CON NUMEROS ALEATORIOS
for l=1:j; % SE CONVIERTE LA MATRIZ
yyy(l)=yy(l); % DE UNA COLUMNA Y MUCHOS
end % RENGLONES A UNA MATRIZ DE
% UN RENGLON Y MUCHAS
% COLUMNAS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% SUMA DE RUIDO A SE袮L MODULADA
y3=c+yyy;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% DEMODULACI覰
g=dpskdemod(y3,M,pi/4);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% CONVERSION DIGITAL-ANALOGICO
vectorsito=zeros(1,a); % SE GENERA UN NUEVO VECTOR, INICIALIZADO EN CEROS
u=-2;
v=0;
for n=1:a;
reduccion=zeros(1,3);
u=u+3;
v=v+3;
for s=u:v;
temp2=[zeros(1,(s-u)), g(s), zeros(1,(v-s))];
reduccion=reduccion+temp2;
end
if (reduccion==[0 0 0]);
o=0;
elseif (reduccion==[0 0 1]);
o=1;
elseif (reduccion==[0 1 0]);
o=2;
elseif (reduccion==[0 1 1]);
o=3;
elseif (reduccion==[1 0 0]);
o=4;
elseif (reduccion==[1 0 1]);
o=5;
elseif (reduccion==[1 1 0]);
o=6;
else (reduccion==[1 1 1]);
o=7;
end
p=j/3;
q=n-1;
r=a-n;
tmp=[zeros(1,q),o,zeros(1,r)];
vectorsito=vectorsito+tmp; %AQUI SE LLENA EL
%VECTOR QUE
%CONTIENE LA SE袮L
%RECUPERADA
end
audio=(vectorsito-4)/4; % SE LE QUITA EL NIVEL DE DC
% Y SE LE QUITA LA
% GANANCIA QUE SE
% LE DIO A LA SE袮L
% INICIAL, "y1"
Fs=8000;
wavplay(y,Fs) % SE REPRODUCE LA SE袮L ORIGINAL
wavplay(audio,Fs) % SE REPRODUCE LA SE袮L RECUPERADA
% G R A F I C A S
plot(y1); %ARCHIVO DE AUDIO
title ('se馻l audio')
axis([500 1000 0 8])
figure
plot(y2)
title('se馻l muestreada')
axis([500 1000 -0.5 8.5])
figure
stairs(vectorsote)
title('se馻l cuantificada')
axis([25000 25200 -0.5 1.5])
figure
plot(t,c)
title('se馻l modulada')
axis([25000 25200 -1.5 1.5])
figure
stairs(g)
title('se馻l demodulada')
axis([25000 25200 -0.5 1.5])
figure
plot(c)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -