📄 matlab.txt
字号:
function y=HDB3(x)
p=0;
q=0;
grid=300;
t=0:1/grid:length(x);
for i=1:length(x)
if(x(i)==1)
if(p==1)
for j=1:grid
y((i-1)*grid+j)=-1;
p=-1;
q=0;
end
else
for j=1:grid
y((i-1)*grid+j)=1;
p=1;
q=0;
end
end
else
if(q==3)
if(p==1)
for j=1:grid
y((i-1)*grid+j)=1;
q=0;
end
else
for j=1:grid
y((i-1)*grid+j)=-1;
q=0;
end
end
else
for j=1:grid
y((i-1)*grid+j)=0;
q=q+1;
end
end
end
end
y=[y,y(i*grid)];
M=max(y); m=min(y);
plot(t,y); axis([0,i,m-0.1,M+0.1]);
保存为HDB3.m
再在workspace中运行
t=[0 0 1 1 0 1 0 0 0 1];
HDB3(t);
对于HDB3_decode,采用同样方法
文件头:
MATLAB仿真HDB3码2007-04-18 23:25这个文件只是对一个序列进行hdb3的编码运算。把横线下面的内容保存为hdb3.m然后在主程序生成一个序列,调用这个文件就可以了。
-------------------------------------------------------------------------------------
%对一个二进制序列进行hdb3编码运算
%y=hdb3(x)
%x为原始序列
function y=hdb3(x)
n=length(x);
last_V=-1;
last_one=-1;
y=zeros(size(x)); %初始化输出序列
count=0; %连0计数器
for i=1:n
if x(i)==1 %遇1则极性反转
y(i)=-last_one;
last_one=y(i);
count=0;
else
count=count+1;
if count==4
count=0;
y(i)=-last_V; %遇4连零则置为V,相邻的V极性反转
last_V=y(i);
if y(i)*last_one==-1 %V与前一个非0符号必须同极性
y(i-3)=y(i); %否则置B
end
last_one=y(i);
end
end
end
-------------------------------------------
主文件如下:
%hdb
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -