在matlab仿真信号中,一种可以对方波画图的函数

在仿真数字信号中,函数Square_plot()可将离散信号整形为连续信号。

同时支持非归零码和归零码的变化,同时支持二元码三元码变换。可在matlab仿真 转换消息码中使用。

下面演示效果: 

先产生一个随机的归零码,以AMI码为例

clc
clear
% 定义二进制信码
code = randi([0 1],1,randi([5 20],1,1));%%
a=length(code)
% 创建时间轴数据
t = 0:0.5:length(code)-0.5;
%AMI码
AMI=[];
flag = 1; % 初始极性为正,即第一个1出现时用1的半占空归零码表示
for i = 1:length(code)
    if code(i) == 1
        AMI = [AMI ones(1, 1)*flag zeros(1,1)];
        if flag==1
           flag=-1;
        else
           flag=1;
        end
    else
        AMI = [AMI zeros(1,2)];
    end
end

plot(t,AMI)

经过函数 Square整形后

Square(t,AMI,1)

 

以非归零码为例,以下为同一随机消息码,使用前后对比

Square()函数如下所示 

%支持归零码和非归零码,可绘出方波
function  result = Square_plot(t,A,Return_0)

step = 0.01;    %步进精度
state_0 = 0;    %函数幅值状态0
state_1 = 1;    %函数幅值状态1
state_2 = -1;   %函数幅值状态2

Code_T = -0.5*Return_0+1;   %计算单个10持续时间,将if语句转化为算式
                            % Return_0 判断是否为归零码

t_Square = 0 : step :t(end)+Code_T-step;
AMI_Square = [];
for i = 1:length(A)
    if A(i) == state_0 
        AMI_Square = [AMI_Square zeros(1,Code_T/step)];
    else if A(i) == state_1 
        AMI_Square = [AMI_Square ones(1,Code_T/step)];
    else
        AMI_Square = [AMI_Square -1*ones(1,Code_T/step)];
    end
    end
   
end
plot(t_Square,AMI_Square);
end

  • 9
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值