C114门户论坛百科APPEN| 举报 切换到宽版

亚星游戏官网

 找回密码
 注册

只需一步,快速开始

短信验证,便捷登录

搜索
查看: 3809|回复: 6

[原理资料] MATLAB学习QPSK之QPSK_MOD_DEMOD [复制链接]

军衔等级:

亚星游戏官网-yaxin222  列兵

注册:2007-8-30
发表于 2023-12-7 20:01:26 |显示全部楼层
最近学习了一个matlab 的qpsk的示例:QPSK_MOD_DEMOD_SALIM

MATLAB Code for QPSK Modulation and Demodulation

因为在学习5G物理层,一直很忙,没有时间。最近稍有一点空闲,所以,学习一下算法。
QPSK的算法,虽然说我没有完全学透,大致还是懂的。只能一直没时间用MATLAB来研究一下。

然后看到这个实例,感觉很好。因为没有中间的AWGN和采样的过程,只讲调制与解调,适合理解。
示例代码见下:

QPSK_MOD_DEMOD_SALIM
MATLAB Code for QPSK Modulation and Demodulation - File Exchange - MATLAB Central
MATLAB Code for QPSK Modulation and Demodulation

Version 1.0.0.0 (2.99 KB) by Md. Salim Raza

MATLAB Code for QPSK Modulation and Demodulation has been Developed According to Conventional Theory


原始代码
亚星游戏官网-yaxin222 QPSK_MOD_DEMOD_SALIMup.zip (1.95 KB, 下载次数: 4)

运行的结果如图

Pasted image 20231204162258.png

单步跟踪代码后,基本都能理解。
特别是调制的部分,都比较熟悉:
S(t)=I⋅cos(2πft)+Q⋅sin(2πft)
这里稍加注意,中国的教科书,大多I与Q是正负相反的,也就是在空间的旋转方向相反;但国外,包括wiki百科,都是相加的,也就是同向。
matlab,显然是同向的,所以是相加。
但是到解调时,就有些看不懂了。

这一句:
Z_in_intg=(mytrapz(t,Z_in))(2/T);% integration using trapizodial rull
为什么积分是>0或者<0,而不是等于0?
这里我研究了好半天。
最后发现是这样的:
调制时,这一句:
y1= s_p_data(1,i)cos(2pift); % inphase component
将一个信号,例如这里是1,乘以cos(2pift)。
可以简单理解为将直流信号,装到一个cos的载波上。
解调时,先:
Z_in=Rx_sig((i-1)length(t)+1:ilength(t)).cos(2pift);
待解的符号,再次乘以cos(2pif*t);
这样就得到了cos的平方。
从而积分值>0 或者 <0,而不是等于零。


信号,调制和解调,分别被乘以一次sin ,所以是sin的平方。所以,积分不再是零。
第一次将图形输出出来之后,没有看懂的原因,如上图,没有看Y轴坐标,还以为是从-1到正1,其坐标已经变了。都在X轴之上,或之下。积分自然不再是零。

2023-12-07_200341.png


调试用代码:
亚星游戏官网-yaxin222 qpsk_learn_hyj.zip (1.11 KB, 下载次数: 2, 查看: 3 家园分)



举报本楼

本帖有 6 个回帖,您需要登录后才能浏览 登录 | 注册
您需要登录后才可以回帖 登录 | 注册 |

手机版|C114 ( 沪ICP备12002291号-1 )|联系大家 |网站地图  

GMT+8, 2024-12-23 03:15 , Processed in 0.137259 second(s), 21 queries , Gzip On.

Copyright © 1999-2023 C114 All Rights Reserved

Discuz Licensed

回顶部
XML 地图 | Sitemap 地图