跪求:基于matlab的DSB调制解调程序!谢谢各位!

跪求:基于matlab的DSB调制解调程序!谢谢各位!,第1张

echo off

close all

clc

t0=0.2

ts=0.001

fs=1/ts

%*********************************************************************

fc=300

%*********************************************************************

t=[-t0/2:ts:t0/2]

df=0.25

%*********************************************************************

m=sinc(100*t)

%*********************************************************************

c=cos(2*pi*fc.*t)

u=m.*c

y=u.*c

[M,m,df1]=fftseq(m,ts,df) %对调制信号m(t)求傅里叶变换

M=M/fs

[U,u,df1]=fftseq(u,ts,df) %对调制后的信号u求傅里叶变换

U=U/fs%缩放

[Y,y,df1]=fftseq(y,ts,df) %对混频后的信号y求傅里叶岩前纳变

Y=Y/fs%缩放

%*********************************************************************

%以悔橘下这段程序是专门用来构建在频谱上的滤波器的方法

f_cutoff=150

n_cutoff=floor(150/df1)

f=[0:df1:df1*(length(y)-1)]-fs/2

H=zeros(size(f))

H(1:n_cutoff)=2*ones(1,n_cutoff)

H(length(f)-n_cutoff+1:length(f))=2*ones(1,n_cutoff)

%********************************************************************

DEM=H.*Y

dem=real(ifft(DEM))*fs %ifft为傅里叶反变换函数,滤波器的输出-解调信号

%乘以fs是为了恢复原信号,因为前面使用了缩放

disp('按任意键可看到混频的效果')

pause

figure(1)

subplot(3,1,1)

plot(f,fftshift(abs(M)))%fftshift:将FFT中的DC分量移到频谱中心

title('原调制信号的频谱图')

xlabel('频率f')

subplot(3,1,2)

plot(f,fftshift(abs(U)))

title('已调信号的频谱图')

xlabel('频率f')

subplot(3,1,3)

plot(f,fftshift(abs(Y)))

title('混频信号的频谱图')

xlabel('频率f')

disp('按任意键可看到混频器输出的波形的频谱效果')

pause

figure(2)

subplot(3,1,1)

plot(f,fftshift(abs(Y)))

title('混频信号的频谱图')

xlabel('频率f')

subplot(3,1,2)

plot(f,fftshift(abs(H)))

title('低通滤波器的频谱图')

xlabel('频率f')

subplot(3,1,3)

plot(f,fftshift(abs(DEM)))

title('混频信粗没号通过滤波器后的信号的频谱图')

xlabel('频率f')

disp('按任意键可看到原调制信号和接受信号频谱的比较')

pause

figure(3)

subplot(2,1,1)

plot(f,fftshift(abs(M)))

title('原调制信号的频谱图')

xlabel('频率f')

subplot(2,1,2)

plot(f,fftshift(abs(DEM)))

title('混频信号通过滤波器后的信号的频谱图')

xlabel('频率f')

disp('按任意键可看到原调制信号和解调器输出信号对比')

pause

figure(4)

subplot(2,1,1)

plot(t,m(1:length(t)))

title('原调制信号的时域图')

xlabel('时间t')

subplot(2,1,2)

plot(t,dem(1:length(t)))

title('解调后信号的时域图')

xlabel('时间t')

子程序

%求傅里叶变换的子函数

function [M,m,df]=fftseq(m,ts,df)

fs=1/ts

if nargin==2

n1=0

else

n1=fs/df

end

n2=length(m)

n=2^(max(nextpow2(n1),nextpow2(n2)))

M=fft(m,n)

m=[m,zeros(1,n-n2)]

df=fs/n

你这LPF函碰银数是别人写的吧,里面还有一个新的F2T()函数不知道是什么,不是MATLAB自带的,也是别人笑耐宴写的,你没拿过来吧。

不管了,你按我给的写,直接全复制到一个文件里,运行就行了。

close all

clear all

dt=0.001

fm=1

fc=10

T=5

t=0:dt:T

mt=sqrt(2)*cos(2*pi*fm*t)

s_dsb=mt.*cos(2*pi*fc*t)

B=2*fm

figure(1)

subplot(311)

plot(t,s_dsb)

hold on

plot(t,mt,'r--')

title('DSB调制信号')

xlabel('t')

f_dsb=fft(s_dsb)

temp=f_dsb

temp([50:4953])=0

s_ssb=ifft(temp)

subplot(312)

plot(t,s_ssb)

hold on

plot(t,mt,'亩消r--')

title('SSB调制信号(下边带)')

xlabel('t')

temp=f_dsb

temp([1:49])=0

temp([4953:end])=0

s_ssb=ifft(temp)

subplot(313)

plot(t,s_ssb)

hold on

plot(t,mt,'r--')

title('SSB调制信号(上边带)')

xlabel('t')


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12477634.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存