- VisualStudio2022插件的安装及使用-编程手把手系列文章
- pprof-在现网场景怎么用
- C#实现的下拉多选框,下拉多选树,多级节点
- 【学习笔记】基础数据结构:猫树
CW可以叫做等幅电报,它通过电键控制发信机产生短信号"."(点)和长信号"--"(划),并利用其不同组合表示不同的字符,从而组成单词和句子.
CW信号可以看作一种幅度调制信号,类似于幅移键控(2ASK信号)其携带的信息保存在其幅度中,通过改变载波的幅度来实现基带数据的传输.
其函数表达式如下:
其中: \(m(t)\):表示基带信号。 \(cos(2\pi ft + \varphi)\):是调制载波.
原理:
通过正交的方式即可解调出基带信号,其数学推导如下:
假设基带信号为\(m(t)\),调制的载波频率为\(f_1\),解调的载波频率为\(f_2\),相位为\(\varphi\),LPF为低通滤波器,则:
I路:
根据三角函数公式:
同理:Q路:
为了计算方便假设:
则:
根据三角函数公式:
注:\(arctan\)函数有作用域\((-\pi/2\space\space\space\space\pi/2)\)要求,所以将使用atan2函数替代.
向量旋转,将一个向量\((cos(\theta_1),sin(\theta_1))\),逆时针旋转\(\theta_2\),旋转后的坐标为\((cos(\theta_1-\theta_2),sin(\theta_1-\theta_2))\)。将I和Q看着一个向量,将其逆时针旋转\(arctan(\frac{-Q(t)}{I(t)})\),那么:
这样就消除了相位差和频率差带来的误差,\(I'(t)\)就是我们解调的结果。其结果与频率差与相位差无关.
看过电视剧里面发电报的应该不陌生,电台在发出或者接收电台信号的时候,经常会听到滴滴答答的声音,CW信号如何转化为音频信号,就需要通过拍频器来完成,将电信号转化为人耳可以识别的声音信号频率(20-20000Hz),通过扬声器播放.
仿真代码:
close all;
fs = 100E3;%采样率
base_data = [1,0,0,1,0,1,0,0,0,1,1,0,0,1,0];
len = 1E3;
mt = interp1((1:length(base_data)), base_data, (0:length(base_data)/len:length(base_data)-length(base_data)/len), 'nearest');
f_carr_1 = 20E3;%调制载波频率
f_carr_2 = 21E3;%解调载波频率
fi = 0.2;%解调载波初始相位
t = 0:1/fs:(len-1)/fs;
cw_data = mt.*cos(2*pi*f_carr_1*t);
I = mt.*cos(2*pi*(f_carr_1-f_carr_2)*t-fi)/2 + randn(size(t))/1000;
Q = -mt.*sin(2*pi*(f_carr_1-f_carr_2)*t-fi)/2 + randn(size(t))/1000;
%% 向量旋转
theta0 = atan2(Q./(-mt),I./(mt));
It0 = I.*cos(theta0) - Q.*sin(theta0);
Qt0 = Q.*cos(theta0) + I.*sin(theta0);
f_p = 4E3;%拍频频率
theta1 = (0:1:length(I)-1)*(f_p*(2*pi)/fs);
It1 = It0.*cos(theta1) ;
%% 保存IQ数据FPGA使用仿真
% fid = fopen('CW.txt','w');
% for i = 1:l
% fprintf(fid,'%d %d\n',floor(I(i)* (2^13)),floor(Q(i)* (2^13)));
% end
% fclose(fid);
%% 绘制
figure
time = 6;
subplot(time,1,1);
plot(mt);
title('基带数据');
subplot(time,1,2);
plot(cw_data);
title('调制数据');
subplot(time,1,3);
plot(I);
title('I路');
subplot(time,1,4);
plot(Q);
title('Q路');
subplot(time,1,5);
plot(It0);
title('解调数据');
subplot(time,1,6);
plot(It1);
title('解调数据(拍频)');
结果:
有空补上 。
最后此篇关于CW信号的正交解调的文章就讲到这里了,如果你想了解更多关于CW信号的正交解调的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我正在尝试使用 HTML/CSS3 和 Javascript 重新创建经典手机游戏“贪吃蛇”。当我运行我在 chrome 中的内容时,我在第 41 行收到意外的标记错误。为什么分号是意外的?我目前的代
当我运行“perl -cw”来检查我的 perl 模块的语法并遇到警告或错误时,会给出两个行号: perl -cw lib/My/Module.pm Global symbol "%badvar" r
public class Menu extends Activity { /** Called when the activity is first created. */ public
假设我有一个多边形的顶点,它们都是逆时针方向的。我希望沿着这个多边形的边界生成 n 个等距点。有谁知道任何现有的软件包可以做到这一点,如果没有,可以使用一种算法吗?我在 Python 中工作。例如,如
我正在为 iOS 设备编写一些触摸输入代码,需要确定滑动的移动相对于屏幕中心是顺时针还是逆时针。 使用触摸的 position 和 deltaPosition,我可以使用点积计算从屏幕中心到这些点的向
如果发出编译警告,我希望 perl -cw ... 返回非零退出状态。 例如。假设 a.pm是文件: use warnings; asd; 然后perl -cw a.pm报告: Unquoted st
如何将RC中FPU位的控制字设置为3? 答案(编者注:不要将答案作为问题的一部分发布,但现在就在这里) fstcw word ptr cw or word ptr cw, 110000000000b
我有一个用例可以在 SLA 未命中时发出警报。我的应用程序在 startTime (M1) 和 endTime (M2) 上发出指标。如果我的工作完成,我将能够通过执行 (M2-M1) 之类的度量数学
我想将 CloudWatch 日志从各种 SAM 堆栈/lambda(可能转发到 Kinesis,然后)转发到 Graylog EC2 实例。重点是,我还想自动添加稍后部署的堆栈中的日志。 如何自动执
首先要感谢 CommonsWare 这个很棒的组件。但我有一个问题,有时让我感到悲伤。即 --> java.lang.IllegalStateException: 适配器的内容已更改但 ListVie
这就是我的 我在 2D X,Y 中有一个平面 我通过点击屏幕 X', Y' 来设置他的目的地 我计算它需要转向以面向此目的地的角度: // Calculate the angle between pl
我尝试了多种方法 - 三重引用和使用格式。但我似乎无法让程序在参数格式正确的情况下运行。该程序是一个自定义程序,我设法使用 os.system() 运行,但由于我需要更复杂的交互,因此需要使用 Pop
我正在尝试找到一种方法来检查 python 中的语法(以及警告),就像它在 perl 上所做的一样,例如:perl -cw filename.pl。 谢谢 最佳答案 您可能想要以下之一: PyChec
我正在研究一种算法,用于将 STL 文件切片为每个切片的单独 SVG 文件。我是我有一组线段的点,这些线段将在每个切片中组成一个或多个多边形(如果 STL 模型中有一个洞,将有几个多边形组成轮廓),我
这是a link我在 stackoverflow 中找到了关于这个问题的信息。 但如果没有具体的例子,我仍然无法理解“更改内部词”和“更改词”之间的区别。 我在vim中测试了这两个命令,最终没有发现任
我正在使用 CodeWarrior for MCU v10.6 IDE 开发一个项目。它是 NXP 的基于 Eclipse 的 IDE。该项目的目标是 NXP 的 K21 SoC(确切地说是 MK21
我正在使用 Dr.Java 来执行此构造函数。当我在交互框中输入以下内容时 CensoredWriter cw = new CensoredWriter(System.out, "whine|whin
我知道CW是顺时针,CCW是逆时针, 但我认为他们达到了同样的效果!他们两个都可以获得一个完整的Rect。path.addRect源码: private void addRect(float left
我找不到任何关于为什么添加到路径的闭合形状想要顺时针或逆时针以及闭合形状意味着什么的解释,比如说要将 CW 或 CCW 添加到路径的椭圆形, 最后你仍然会得到和椭圆形添加到路径? 最佳答案 这些值定义
我不知道这是不是一个太具体的问题,如果可能的话,但我必须将使用 CaSTLe Windsor 的应用程序移植到 Unity,这样就不会依赖非 Microsoft 批准的库.我知道我知道,但你打算做什么
我是一名优秀的程序员,十分优秀!