当前位置:   article > 正文

基于matlab产生数字信号的时域波形——将数字信号当作特殊的模拟信号_数字信号如何转换成时域波型信号

数字信号如何转换成时域波型信号

在使用matlab的时候,可以很方便的表示二进制的序列或者其他形式的数字信号。用一个行向量表示即可。

但是有时候需要对数字信号的时域波形进行某些操作,例如对时域信号进行调制。将正弦波和一个向量相乘是不现实的,因此本文讲说明如何将matlab中的向量恢复成细小的采样点组成的函数采样序列

写贴上整个的代码

  1. %用来产生二进制码的波形
  2. %待转换的二进制序列
  3. x=round(rand(1,20));%用对随机数取整数的方法产生二进制序列,也可以是其它需要的序列
  4. %基本设定
  5. codeN=length(x);%码元个数
  6. codeTap=1;%每个码元的时间
  7. sampRate=50;%每个码元时间内有多少个取样点
  8. sampTime=codeTap/sampRate;%取样周期内每个取样点的时间间隔
  9. startTime=0;%信号开始的设定时间
  10. tCir=0:sampTime:codeTap-sampTime;%每个码元的时间范围
  11. t=startTime:sampTime:codeTap*codeN-sampTime;%最终输出结果的时间范围
  12. %设定码元和波形的对应关系,可以是需要的波形直接的01
  13. x0=zeros(1,length(tCir));%码元为0时对应的波形
  14. x1=ones(1,length(tCir));%码元为1时对应的波形
  15. xDirection=[x0;x1];%波形的查询列表,用于在迭代时进行查询
  16. %得到输出波形
  17. y=[];%输出信号的初始化
  18. for i=x%对进制码进行迭代
  19. y=cat(2,y,xDirection(i+1,:));
  20. end
  21. plot(t,y);

输出波形如图

脚本前面的相关参数设定可以需要更改,也可以选择合适的输入输出变量变成一个需要的函数。

脚本中的xDirection变量可以扩展成不同的维度,适应不同的进制数,例如对于四进制的情况,可以把查询列表部分的代码改成这样:

  1. %待转换的二进制序列
  2. x=round(3*rand(1,20));%用对随机数取整数的方法产生二进制序列,也可以是其它需要的序列
  3. %设定码元和波形的对应关系,可以是需要的波形或直接的01
  4. x0=zeros(1,length(tCir));%码元为0时对应的波形
  5. x1=ones(1,length(tCir));%码元为1时对应的波形
  6. x2=2*ones(1,length(tCir));%码元为2时对应的波形
  7. x3=3*ones(1,length(tCir));%码元为3时对应的波形
  8. xDirection=[x0;x1;x2;x3];%波形的查询列表,用于在迭代时进行查询

相应地波形如图

因为代码的结构设定,波形查询列表可以不是单纯的恒定值,也可以在产生波形的过程中直接完成调制的功能。例如将查询部分的代码改写成

  1. %设定码元和波形的对应关系,可以是需要的波形或直接的01
  2. x0=cos(2*pi*codeTap*tCir);%码元为0时对应的波形
  3. x1=cos(6*2*pi*codeTap*tCir);%码元为1时对应的波形
  4. xDirection=[x0;x1];

从而完成了2FSK调制,波形如图所示

算法不完善的方面

最终生成信号的时候采用了迭代方法,并且迭代过程中对矩阵的大小进行了多次改写,运行速度较慢。因此烦请大佬指出是否有更优的解决方案。感谢提出指正。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/799013
推荐阅读
相关标签
  

闽ICP备14008679号