在仿真数字信号中,函数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