
贼详细的8PSK调制与解调详细过程
⼀、关于
1.花了⼏天写了⼀个8PSK调制的MATLAB程序,从产⽣序列到最后解调出原始信号。
2.我在⽹上查资料的时候发现并没有详细的⼀个调制完整过程,于是我把写的完整过程贴出来。
3.要想把通信专业学好的话,脑⼦⾥⾸先要有⼀个通信系统的全过程,从信源开始到信宿结束。但是在课本的系统框
图中,有些模块在⼀般情况下并⽤不上。⽐如信道编码、信源编码、加密、解密等等。在本篇仿真过程中不涉及这⼏
个模块,等有时间再额外写。⽽且在实际中⼜会涉及到源信息频率与发射设备所⽀持的频率不⼀致,这⼜如何解决?
4.通信专业要学的真是太多了,想总结出来⼗分困难,在实现通信系统的每⼀步都涉及到很多技术,如采样、滤波、
调制、同步(⾮常重要,但⼜⼗分难)、解调等等,⽽且还挺难,因为经历过这个过程,所以在本⽂中,尽量把涉及
到的原理都解释⼀下。
5.其实这个过程很简单,主要是加深对通信系统的了解。
6.、、、、、、还不知道6写啥
⼆、程序中未涉及到但是不得不知的⼀些知识点
1. matlab信号处理⼯具规定单位频率为奈圭斯特频率(采样频率的⼀半),所以基本的滤波器设计函数的截⽌频率参
数均以奈圭斯特频率为基准做归⼀化。例如,对于⼀个采样频率为1000Hz的系统,300Hz则对应300/500=0.6。若要
将归⼀化频率转换为单位圆上的弧度,则将归⼀化值乘以π(pi)即可。
2. 尽量对基带信号进⾏编码(本⽂使⽤的格雷码),对解决误⽐特率问题效果很好,在仿真过程中未编码之前百分之
3左右,编码后为0。
3. 数字通信系统中,由于总的传输特性不理想,会使传输波形产⽣畸变,会引起幅度失真和相位失真,表现为连续传
输的脉冲波形会受到破坏,使得接收端前后脉冲不再能清晰的分开,也就是产⽣了码间串扰。时域中,抽样时刻⽆码
间串扰的条件为,抽样时刻仅存在当前码元的抽样值,不存在历史时刻码元抽样值的加权值。
在实际的传输系统中,很少利⽤⽅波作为基带脉冲波形,因为基带脉冲波形的功率谱形状为 Sa(f)形状,旁瓣功率
⼤,容易对其他频带产⽣⼲扰, 也容易失真。这就需要对基带脉冲进⾏成型,来压缩带宽,但是由于压缩了带宽必
然会带来时域信号的延长,这是⽆可避免的。奎斯特第⼀准则告诉我们,理想成型滤波器是矩形成型滤波器,它是物
理⽆法实现的,但我们并不为此感到失望,因为其频率响应没有过渡带,这导致了其冲击响应为 Sa(t)形式,拖尾严
重,在位定时信息不精准的情况下,会引⼊较⼤的码间串扰值。
在实际中最常⽤的成型滤波器为升余弦成型滤波器,它具有平滑的特性,拖尾幅度较⼩, 可以使得在对当前码元抽
样时,免受码元串扰值的影响,同时在位定时不精准的情况下,由抽样引⼊的码间串扰值减⼩,增加了系统的可靠
性,但滚降因⼦越⼤,会造成调制之后的信噪⽐(SNR)降低。为了降低滤波器的设计复杂度,升余弦成型滤波器
的设计通常设计为匹配滤波器,也就是在发射端设置⼀个均⽅根升余弦滤波器,接收端同样地设置⼀个均⽅根升余弦
滤波器,接收端的均⽅根升余弦滤波器的频率响应为发射端的共轭。在基带通信系统中,在满⾜⽆码间串扰的条件
下,经过理想成型的频带利⽤率和经过升余弦程序的频带利⽤率的极值分别为:2(Baud/Hz/s)和 2/(1+a)
(Baud/Hz/s)。其中a为滚降因⼦。
4. 升余弦滤波器:
b = rcosdesign(beta,span,sps,shape)
beta: 滚降系数,取值0~1之间,决定频宽和陡峭程度。取值⼀般⼤于0.2。
span: 表⽰截断的符号范围。
sps: 单个符号范围的采样个数。
shape:可选参数。可不加,可加上'normal',可加上'sqrt'。
当选择'sqrt'时,返回⼀个平⽅根升余弦滤波器。
使⽤⽰例:
d = 2 * randi([0 1], 20, 1) - 1;
h = rcosdesign(rolloff,span,sps);
x=conv(d,h,'same');
5. 低通滤波器
fir1是⽤窗函数法设计线性相位FIRDF的⼯具箱函数,以实现线性相位FIRDF的标准窗函数法设计。
b=fir1(n,wn);
b=fir1(n,wn,'ftype');
b=fir1(n,wn,'ftype',window);
%b为滤波器系数,n为滤波器阶数,wn为截⽌频率,当指定ftype时,可设计⾼通和带阻滤波器。ftype=high时设计⾼
通,低通和带通⽆需输⼊ftype。
程序中使⽤的是y_de7=fir1(127,1/10);
使⽤⽰例:
y_de7=fir1(127,1/10);
sit_1600k_f=conv(sit_1600k,y_de7,'same');
⾄于如何设计滤波器,这⾥不赘述,可以看看其他篇。
6.成形滤波、匹配滤波器、均衡滤波器
是什么呢?作⽤是⼲嘛的?
6.1 成形滤波:
1.作⽤是保证采样点不失真。如果没有它,那信号在经过带限信道后,眼图张不开,ISI⾮常严重。
2.位置在基带调制之后在载波调制之前,仅挨着载波调制
3.总之,⼀般是⽤的升余弦滤波器,就是在基带信号产⽣后⽤,参考程序⾷⽤。
6.2 匹配滤波器
1.⽬标:在存在⾼斯⽩噪声的条件下使已知信号的信噪⽐最⼤。
2.适⽤于具有任意参数(如振幅、到达时间)的已知信号,可以看作与信号的已知形状匹配的模板。
3.⼀般滤波器的⽬标是尽量保持有⽤信号的时域或频域结构,⽽匹配滤波器则通过集中与之相匹配的信号能量来改变
信号的时间结构,并在输出码元的末端获得振幅最⼤值。
4.实现:⽤输⼊信号与参考信号相关,选出匹配程度最⼤的信号。
2. 8PSK调制的框图
2.1 ⾸先8PSK需要3bit来表⽰,按照格雷码的顺序,分别映射到坐标中的8个点,如下图:
然后坐标 可以写成复数形式 。于是:
2.2 调制原理:
看出来了吗,这样就将载波函数利⽤上了,在调制过程中只要I路和Q路的信号分别去乘再相加就解决了。注意sin函
数前⾯有个负号。
2.3 解调原理
只要把已调信号再乘⼀遍载波,得到上式,看到了吗,如果在经过⼀个低通滤波器,就可以把原信号滤出来了。不过
要注意系数这⾥除以2 ,在程序中乘以2 就解决了。
四、 如何改变采样频率
在实际中可能涉及到源信号的频率与发射设备不匹配的问题。⽐如我源信息的频率是16k但是发射设备⽀持的频率是
250M,这就需要对信号的采样率进⾏调整。即抽取和插值。
1.1 抽取
(为什么先滤波再抽取,先插值再滤波?时间有限,可看看书上这⼀部分)???????
1.1.1先滤波再抽取
时域中研究:
h(n)为⼀理想低通滤波器:
滤波后的输出为:
对v(n)抽取后的序列为y(n) :
频域中研究:
在(-π/M~π/M)内, 抽取后信号的频谱与原信号频谱只是幅度相差M倍。
1.1.2 画图理解
将x(n)中每M个点中抽取⼀个,依次组成⼀个新的序列y(n),即:
y(n)和x(n)的DTFT有如下关系:
含意:将信号x(n)作M倍的抽取后,所得信号y(n)的频谱等于原信号x(n)的频谱先作M倍的扩展,再在ω轴上每隔 作
移位后再迭加。
抽样之前,保证f(s)>2f(c);就可以保证信号不发⽣混叠!对于抽样之后的系统,只要保证f(s)>2Mf(c),同样系统也不会发
⽣混叠现象。
注意:若M是可变的,为防⽌抽取后在出现混迭,应对x(n)抽取前先作低通滤波,压缩其频带。
1.2 插值(先插值再滤波)
1.2.1 画图理解插值
将x(n)中每两个点之中补L-1个0,组成⼀个新的序列v(n),即:
插零后的信号及其频谱:
插零后信号的频谱V(jω)在(-π/L~π/L)内等于X(ejω),相当于将X(ejω)作了周期压缩。换句话说,就是V(jω)在(-π~π)内包
含了L个X(jω)的压缩样本。
1.2.2 先插值再滤波
频域中研究:
实际实现插值的⽅法是⽤v(n)和⼀低通滤波器作卷积 :
所以应取c=L以保证y(n)=x(n/L) 。
时域中研究:
注意:插值时补进来的零,不再是零。此时再进⾏低通滤波,⽆⾮是想将我们的信号频谱恢复出来!
3.3 抽取与插值相结合的抽样率转换
该滤波器既去除了插值后的映像⼜防⽌了抽取后的混迭。
五、贴程序(具体看注释,仿真图就不放了,图太多)
%% 8PSK 基本参数
clc
clear all
clo all
Fc=700e6;%Fc载波频率
%% 基带信号
data_num=300;
data = randint(1,data_num); %产⽣1⾏300列的矩阵,元数为0-1之间的随机数,包括0和1
figure(1)
subplot(211)
plot(data);title('原始基带信号')%以data分量为纵坐标,以元素序号为横坐标,⽤直线依次连接数据点,绘制曲线
ts=0:1:length(data)-1;
subplot(212)
stem(ts,data);title('原始基带信号');%“有时间向量的话,序列是冲激”
%% 8psk调制
fs_16k=16e3;%假设最开始采样频率是16e3
it=[];qt=[];
sit=[];sqt=[];
for i=1:3:length(data)
I(i) = data(i);
Q(i+1) = data(i+1);
U(i+2) = data(i+2);
if I(i)==0 && Q(i+1)==0 && U(i+2)==0
it=0.924*ones(1,1);%1⾏1列的全为1的矩阵
qt=0.383*ones(1,1);
elif I(i)==0 && Q(i+1)==0 && U(i+2)==1
it=0.383*ones(1,1);
qt=0.924*ones(1,1);
elif I(i)==0 && Q(i+1)==1 && U(i+2)==1
it=-0.383*ones(1,1);
qt=0.924*ones(1,1);
elif I(i)==0 && Q(i+1)==1 && U(i+2)==0
it=-0.924*ones(1,1);
qt=0.383*ones(1,1);
elif I(i)==1 && Q(i+1)==1 && U(i+2)==0
it=-0.924*ones(1,1);
qt=-0.383*ones(1,1);
elif I(i)==1 && Q(i+1)==1 && U(i+2)==1
it=-0.383*ones(1,1);
qt=-0.924*ones(1,1);
elif I(i)==1 && Q(i+1)==0 && U(i+2)==1
sps=10;
h = rcosdesign(beta,span,sps);
sit_160k_f=conv(sit_160k,h,'same');
sqt_160k_f=conv(sqt_160k,h,'same');
figure(4)
subplot(221)
plot(sit_160k_f);title('10倍插值i路')
subplot(222)
plot(sqt_160k_f);title('10倍插值q路')
subplot(223)
plot(-fs_160k/2:fs_160k/length(sit_160k_f):fs_160k/2-fs_160k/length(sit_160k_f),fftshift(abs(fft(sit_160k_f))));
xlabel('Frequency(Hz)');
ylabel('Amp');
title('I路频谱图(升余弦)')
subplot(224)
plot(-fs_160k/2:fs_160k/length(sqt_160k_f):fs_160k/2-fs_160k/length(sqt_160k_f),fftshift(abs(fft(sqt_160k_f))));
xlabel('Frequency(Hz)');
title('Q路频谱图(升余弦)')
%% 160k-1600k,插值:先插后滤,抽取:先抽后滤
fs_1600k=1600e3;
sit_1600k=upsample(sit_160k_f,10);
sqt_1600k=upsample(sqt_160k_f,10);
y_de7=fir1(127,1/10);
sit_1600k_f=conv(sit_1600k,y_de7,'same');
sqt_1600k_f=conv(sqt_1600k,y_de7,'same');
figure(5)
subplot(221)
plot(sit_1600k_f);title('100倍插值i路')
subplot(222)
plot(sqt_1600k_f);title('100倍插值q路')
subplot(223)
plot(-fs_1600k/2:fs_1600k/length(sit_1600k_f):fs_1600k/2-fs_1600k/length(sit_1600k_f),fftshift(abs(fft(sit_1600k_f))));
xlabel('Frequency(Hz)');
ylabel('Amp');
title('I路频谱图(低通)')
subplot(224)
plot(-fs_1600k/2:fs_1600k/length(sqt_1600k_f):fs_1600k/2-fs_1600k/length(sqt_1600k_f),fftshift(abs(fft(sqt_1600k_f))));
xlabel('Frequency(Hz)');
title('Q路频谱图(低通)');
%% 1600k-16M,插值:先插后滤,抽取:先抽后滤
fs_16M=16e6;
sit_16M=upsample(sit_1600k_f,10);
sqt_16M=upsample(sqt_1600k_f,10);
y_de7=fir1(127,1/10);
sit_16M_f=conv(sit_16M,y_de7,'same');
sqt_16M_f=conv(sqt_16M,y_de7,'same');
figure(6)
subplot(221)
plot(sit_16M_f);title('1000倍插值i路')
subplot(222)
plot(sqt_16M_f);title('1000倍插值q路')
subplot(223)
plot(-fs_16M/2:fs_16M/length(sit_16M_f):fs_16M/2-fs_16M/length(sit_16M_f),fftshift(abs(fft(sit_16M_f))));
xlabel('Frequency(Hz)');
ylabel('Amp');
title('I路频谱图(低通)')
subplot(224)
plot(-fs_16M/2:fs_16M/length(sqt_16M_f):fs_16M/2-fs_16M/length(sqt_16M_f),fftshift(abs(fft(sqt_16M_f))));
xlabel('Frequency(Hz)');
title('Q路频谱图(低通)');
sqt_25M=resample(sqt_16M_f,25,16);
figure(7)
subplot(221)
plot(sit_25M);title('25/16倍插值i路')
subplot(222)
plot(sqt_25M);title('25/16倍插值q路')
subplot(223)
plot(-fs_25M/2:fs_25M/length(sit_25M):fs_25M/2-fs_25M/length(sit_25M),fftshift(abs(fft(sit_25M))));
xlabel('Frequency(Hz)');
ylabel('Amp');
title('I路频谱图(低通)')
subplot(224)
plot(-fs_25M/2:fs_25M/length(sqt_25M):fs_25M/2-fs_25M/length(sqt_25M),fftshift(abs(fft(sqt_25M))));
xlabel('Frequency(Hz)');
title('Q路频谱图(低通)')
%% 25M-250M
fs_250M=250e6;
%resample为信号降采样处理,理解如下:B=resample(x,90,250);
% 采样从250Hz降到90Hz,如果250在前,就是插值从90到250,可以看B的长度,250Hz采样4000个数据等于90hz采样1440个数据,这就是降采样。
sit_250M=upsample(sit_25M,10);
sqt_250M=upsample(sqt_25M,10);
y_de7=fir1(127,1/10);
sit_250M_f=conv(sit_250M,y_de7,'same');
sqt_250M_f=conv(sqt_250M,y_de7,'same');
figure(8)
subplot(221)
plot(sit_250M_f);title('10倍插值i路')
subplot(222)
plot(sqt_250M_f);title('10倍插值q路')
subplot(223)
plot(-fs_250M/2:fs_250M/length(sit_250M_f):fs_250M/2-fs_250M/length(sit_250M_f),fftshift(abs(fft(sit_250M_f))));
xlabel('Frequency(Hz)');
ylabel('Amp');
title('I路频谱图(低通)')
subplot(224)
plot(-fs_250M/2:fs_250M/length(sqt_250M_f):fs_250M/2-fs_250M/length(sqt_250M_f),fftshift(abs(fft(sqt_250M_f))));
xlabel('Frequency(Hz)');
title('Q路频谱图(低通)')
%% 带通调制
fs_250M=250e6;
T=length(sqt_250M_f);%T=
t=0 : 1/fs_250M :T/fs_250M - 1/fs_250M;%fs = 100
% c=exp(j*2*pi*Fc*t); %载波信号,Fc=70e6
c1=cos(2*pi*Fc*t); %同相载波
c2=-sin(2*pi*Fc*t); %正交载波
psk8 = sit_250M_f.*c1 + sqt_250M_f.*c2;
figure(9),
% subplot(221);plot(t,c);title('载波信号')
subplot(221);plot(t,c1);title('同相载波')
subplot(222);plot(t,c2);title('正交载波')
subplot(223);plot(t,psk8); title('已调信号')
subplot(224);
plot(-fs_250M/2:fs_250M/length(psk8):fs_250M/2-fs_250M/length(psk8),fftshift(abs(fft(psk8))));
xlabel('Frequency(Hz)');
ylabel('Amp');
title('已调信号频谱图')
%% 解调
fs_250M=250e6;
plot(rqt_250M_f);title('Q路解调信号')
subplot(223)
plot(-fs_250M/2:fs_250M/length(rit_250M_f):fs_250M/2-fs_250M/length(rit_250M_f),fftshift(abs(fft(rit_250M_f))));
xlabel('Frequency(Hz)');
ylabel('Amp');
title('I路解调信号频谱图(低通)')
subplot(224)
plot(-fs_250M/2:fs_250M/length(rqt_250M_f):fs_250M/2-fs_250M/length(rqt_250M_f),fftshift(abs(fft(rqt_250M_f))));
xlabel('Frequency(Hz)');
title('Q路解调信号频谱图(低通)')
%% 250M-25M,插值:先插后滤,抽取:先滤后抽
fs_25M=25e6;
%resample为信号降采样处理,理解如下:B=resample(x,90,250);
% 采样从250Hz降到90Hz,如果250在前,就是插值从90到250,可以看B的长度,250Hz采样4000个数据等于90hz采样1440个数据,这就是降采样。
y_de7=fir1(127,1/10);
rit_250M_f1=conv(rit_250M_f,y_de7,'same');
rqt_250M_f1=conv(rqt_250M_f,y_de7,'same');
rit_25M=downsample(rit_250M_f1,10);
rqt_25M=downsample(rqt_250M_f1,10);
figure(11)
subplot(221)
plot(rit_25M);title('10倍抽取i路')
subplot(222)
plot(rqt_25M);title('10倍抽取q路')
subplot(223)
plot(-fs_25M/2:fs_25M/length(rit_25M):fs_25M/2-fs_25M/length(rit_25M),fftshift(abs(fft(rit_25M))));
xlabel('Frequency(Hz)');
ylabel('Amp');
title('I路频谱图(低通)')
subplot(224)
plot(-fs_25M/2:fs_25M/length(rqt_25M):fs_25M/2-fs_25M/length(rqt_25M),fftshift(abs(fft(rqt_25M))));
xlabel('Frequency(Hz)');
title('Q路频谱图(低通)')
%% 25M-16M,插值:先插后滤,抽取:先滤后抽
fs_16M=16e6;
%resample为信号降采样处理,理解如下:B=resample(x,90,250);
% 采样从250Hz降到90Hz,如果250在前,就是插值从90到250,可以看B的长度,250Hz采样4000个数据等于90hz采样1440个数据,这就是降采样。
% y_de7=fir1(127,1/10);
% rit_25M_f=conv(rit_25M,y_de7,'same');
% rqt_25M_f=conv(rqt_25M,y_de7,'same');
rit_16M=resample(rit_25M,16,25);
rqt_16M=resample(rqt_25M,16,25);
figure(12)
subplot(221)
plot(rit_16M);title('10*25/16倍抽取i路')
subplot(222)
plot(rqt_16M);title('10*25/16倍抽取q路')
subplot(223)
plot(-fs_16M/2:fs_16M/length(rit_16M):fs_16M/2-fs_16M/length(rit_16M),fftshift(abs(fft(rit_16M))));
xlabel('Frequency(Hz)');
ylabel('Amp');
title('I路频谱图(低通)')
subplot(224)
plot(-fs_16M/2:fs_16M/length(rqt_16M):fs_16M/2-fs_16M/length(rqt_16M),fftshift(abs(fft(rqt_16M))));
xlabel('Frequency(Hz)');
title('Q路频谱图(低通)')
%% 16M-1600k,插值:先插后滤,抽取:先滤后抽
fs_1600k=1600e3;
%resample为信号降采样处理,理解如下:B=resample(x,90,250);
% 采样从250Hz降到90Hz,如果250在前,就是插值从90到250,可以看B的长度,250Hz采样4000个数据等于90hz采样1440个数据,这就是降采样。
y_de7=fir1(127,1/10);
rit_16M_f=conv(rit_16M,y_de7,'same');
figure(13)
subplot(221)
plot(rit_1600k);title('10倍抽取i路')
subplot(222)
plot(rqt_1600k);title('10倍抽取q路')
subplot(223)
plot(-fs_1600k/2:fs_1600k/length(rit_1600k):fs_1600k/2-fs_1600k/length(rit_1600k),fftshift(abs(fft(rit_1600k))));
xlabel('Frequency(Hz)');
ylabel('Amp');
title('I路频谱图(低通)')
subplot(224)
plot(-fs_1600k/2:fs_1600k/length(rqt_1600k):fs_1600k/2-fs_1600k/length(rqt_1600k),fftshift(abs(fft(rqt_1600k))));
xlabel('Frequency(Hz)');
title('Q路频谱图(低通)')
%% 1600k-160k,插值:先插后滤,抽取:先滤后抽
fs_160k=160e3;
%resample为信号降采样处理,理解如下:B=resample(x,90,250);
% 采样从250Hz降到90Hz,如果250在前,就是插值从90到250,可以看B的长度,250Hz采样4000个数据等于90hz采样1440个数据,这就是降采样。
y_de7=fir1(127,1/10);
rit_160k_f=conv(rit_1600k,y_de7,'same');
rqt_160k_f=conv(rqt_1600k,y_de7,'same');
rit_160k=downsample(rit_160k_f,10);
rqt_160k=downsample(rqt_160k_f,10);
figure(14)
subplot(221)
plot(rit_160k);title('10倍抽取i路')
subplot(222)
plot(rqt_160k);title('10倍抽取q路')
subplot(223)
plot(-fs_160k/2:fs_160k/length(rit_160k):fs_160k/2-fs_160k/length(rit_160k),fftshift(abs(fft(rit_160k))));
xlabel('Frequency(Hz)');
ylabel('Amp');
title('I路频谱图(低通)')
subplot(224)
plot(-fs_160k/2:fs_160k/length(rqt_160k):fs_160k/2-fs_160k/length(rqt_160k),fftshift(abs(fft(rqt_160k))));
xlabel('Frequency(Hz)');
title('Q路频谱图(低通)')
%% 160k-16k,插值:先插后滤,抽取:先滤后抽
fs_16k=16e3;
%resample为信号降采样处理,理解如下:B=resample(x,90,250);
% 采样从250Hz降到90Hz,如果250在前,就是插值从90到250,可以看B的长度,250Hz采样4000个数据等于90hz采样1440个数据,这就是降采样。
y_de7=fir1(127,1/10);
rit_160k_f=conv(rit_160k,y_de7,'same');
rqt_160k_f=conv(rqt_160k,y_de7,'same');
rit_16k=downsample(rit_160k_f,10);
rqt_16k=downsample(rqt_160k_f,10);
figure(15)
subplot(221)
plot(rit_16k);title('10倍抽取i路')
subplot(222)
plot(rqt_16k);title('10倍抽取q路')
subplot(223)
plot(-fs_16k/2:fs_16k/length(rit_16k):fs_16k/2-fs_16k/length(rit_16k),fftshift(abs(fft(rit_16k))));
xlabel('Frequency(Hz)');
ylabel('Amp');
title('I路频谱图(低通)')
subplot(224)
plot(-fs_16k/2:fs_16k/length(rqt_16k):fs_16k/2-fs_16k/length(rqt_16k),fftshift(abs(fft(rqt_16k))));
xlabel('Frequency(Hz)');
%% 8psk解调
fs_16k=16e3;
rt=[ ];
rt1=[ ];
for m=1:length(rit_16k)/100:length(rit_16k)
II(m) = rit_16k(m);
QQ(m) = rqt_16k(m);
if II(m)<0 &&=""><0 &&=""><>
rt=[1 1 1];%7
elif II(m)<0 &&=""><0 &&="" qq(m)="">II(m)
rt=[1 1 0];%6
elif II(m)>0 && QQ(m)<0 &&="" abs(qq(m))="">II(m)
rt=[1 0 1];%5

本文发布于:2023-11-28 13:28:06,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/zhishi/a/170114928635828.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:贼详细的8PSK调制与解调详细过程.doc
本文 PDF 下载地址:贼详细的8PSK调制与解调详细过程.pdf
| 留言与评论(共有 0 条评论) |