求4DPSK 调制解调matlab代码

求4DPSK 调制解调matlab代码,第1张

%DPSK

调制解调程序清单

%

仿真

DPSK

信号的产生及相干解调过程

%

将成形滤波器系数量化为

10

比特后,写入

tra_lpf.coe

文件中

%

将接收滤波器系数量化为

10

比特后,写入

rec_lpf.coe

文件中

%

DPSK

已调数据量化为

8

比特后,写入

Dpsk.txt

文件中

ps=1*10^6

%

码速率为

1MHz

a=0.8

%

成形滤波器系数为

0.8

B=(1+a)*ps

%

中频信号处理带宽

Fs=8*10^6

%

采样速率为

8MHz

fc=2*10^6

%

载波频率为

2MHz

N=20000

%

仿真数据的长度

t=0:1

/Fs:(N*Fs/ps-1)/Fs%

产生长度为

N,

频率为

fs

的时间序列

s=randint(N,1,2)

%

产生随机数据作为原始数据

,

%

并将绝对码变换为相对码

ds=ones(1,N)

for i=2:N

if s(i)==1

ds(i)=-ds(i-1)

else

ds(i)=ds(i-1)

end

end

%

对相对码数据以

Fs

频率采样

Ads=upsample(ds,Fs/ps)

%

设计平方升余弦滤波器

n_T=[-2 2]

rate=Fs/ps

T=1

Shape_b = rcosfir(a,n_T,rate,T)%figure(4)freqz(Shape_b)

%

对采样后的数据进行升余弦滤波

rcos_Ads=filter(Shape_b,1,Ads)

%

产生载频信号

f0=sin(2*pi*fc*t)

%

产生

DPSK

已调信号

dpsk=rcos_Ads.*f0

%

与相干载波相乘,实现相干解调

demod_mult=dpsk.*f0

%

设计接收端低通滤波器

fc=[ps 3.1*10^6]

%

过渡带

mag=[1 0]

%

窗函数的理想滤波器幅度

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

A=imread('你的图像')

imhist(A)

B=histeq(A,256)%均衡化

imhist(B)

C=imadjust(A)%规定化

imhist(C)


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

原文地址:https://54852.com/yw/8166346.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存