clc;
clear;
close all;
warning off;
addpath(genpath(pwd));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Fmax=100; %Frecuencia de la Señal Analogica
Fs=2*Fmax; %Frecuencia de muestreo
Ts=1/Fs; %Periodo de muestreo
N=100; %Numero de muestras
nb=5; %Tamaño de la palabra de la codificacion para cada muestra
L=2^nb-1 %Numero de niveles permitidos
x=randi(L,N,1); %Se genera las muestras aleatoria de la señal
xpcm=dec2bin(x)-48; %se codifica en binario natural
xpcm=xpcm(:); %se coloca la señal PCM en un vector
%Aca es necesario calcular la frecuencia de muestreo de la señal PCM
%resultante que esta relacionada con la Fs de la señal y el numero de bit y
%el numero de puntos que se usara para construir la representacion digital
%de la cadena PCM.
Np=20 %Cada pulso se conformara por 20 puntos.
Ts1=(Ts/nb)*(1/Np);
Fs1=1/Ts1;
%Con la información de Fs1 y Ts1 y sabiendo el numero de muestras y la
%cantiadad de bits por muestra se realiza el barrido de tiempo
t=0:Ts1:N*nb*Np*Ts1-Ts1;
%Tambien para mostrar correctamente el espectro es necesario realizar el
%barrido de frecuencias necesarios asi
f=linspace(-Fs1/2,Fs1/2,length(t));
%Se usara codificacion NRZ para esta parte
pnrz=ones(1,Np); %Pulso basico para transmision
%Realizamos la señalizacion
senpcm=pnrz'*xpcm';
%conertimos a un vector
senpcm=senpcm(:);
%graficamos
subplot(321)
plot(t,senpcm)
title('Señal PCM en el tiempo')
%Podemos obtener mas informacion si observamos esta señal en el dominio de
%la frecuecia
SENPCM=fft(senpcm)/length(senpcm);
%graficamos
subplot(322)
plot(f,fftshift(abs(SENPCM))/max(abs(SENPCM)))
title('Señal PCM en la frecuencia y filtro ideal')
%Segun nuestros calculos vtx=Fs*5=1000bps, entonces BWtx=vtx/2 (NRZ)
%BWtx=500Hz
hold on
fc_ideal=500; %Frecuencia de corte ideal, Puede cambiarse para probar
H=(abs(f)<=fc_ideal); %se construye un filtro ideal
plot(f,H,'r','linewidth',3);
legend(' PCM','Filtro Ideal')
SENPCM_FIL=fftshift(H').*(SENPCM); %se realiaza el fitrado de la señal
subplot(323)
plot(f,fftshift(abs(SENPCM_FIL))/max(abs(SENPCM_FIL)));
title(' PCM filtrada en la frecuencia')
%Calculamos la transformada inversa y observamos la señal PCM
senpcm_fil=ifft(SENPCM_FIL)*length(SENPCM_FIL);
subplot(324)
plot(t,real(senpcm_fil))
title(' PCM filtrada en el tiempo')
hold on
plot(t,senpcm,'r','linewidth',2)
legend(' filtrada',' Original')
%Ahora consideraremos el caso mas real al usar un filtro RC con frecuencia
%de corte igual a la del ancho de banda de transmission calculado
fcorte=500;
Hrc=1./(1+j*f/fcorte); %Funcion de transferencia del filtro
SENPCM_FILrc=fftshift(Hrc').*(SENPCM);
subplot(325)
plot(f,fftshift(abs(SENPCM_FILrc)));
title(' PCM filtrada con filtro RC')
senpcm_filrc=ifft(SENPCM_FILrc)*length(SENPCM_FILrc);
subplot(326)
plot(t,real(senpcm_filrc))
title(' PCM filtrada en el tiempo')
hold on
plot(t,senpcm,'r','linewidth',2)
legend(' filtrada',' Original')
fpga和matlab
- 粉丝: 17w+
- 资源: 2636
最新资源
- 冒泡排序算法详解及Java与Python实现
- 字幕网页文字检测20-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- FastAdmin后台框架开源且可以免费商用,一键生成CRUD, 一款基于ThinkPHP和Bootstrap的极速后台开发框架,基于Auth验证的权限管理系统,一键生成 CRUD,自动生成控制器等
- IMG_4525.jpg
- 基于 Spring Cloud 的一个分布式系统套件的整合 具备 JeeSite4 单机版的所有功能,统一身份认证,统一基础数据管理,弱化微服务开发难度
- GigaDevice.GD32F4xx-DFP.2.1.0 器件安装包
- 智慧校园数字孪生,三维可视化
- 多种土地使用类型图像分类数据集【已标注,约30,000张数据】
- 3.0(1).docx
- 国产文本编辑器:EverEdit用户手册 1.1.0
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈