matlab 8线-3线优先编码器如何编写

如题所述

function [Three]=Eight2Three(Eight);
%从左到右依次为从高位低到位
%输入为二进制的数组
%比方说:Eight=[1 0 1 0 0 0 0 0];
%那么根据优先编码的原则,这个编码为最高位,应该输出7的二进制:1 1 1
%编码原则为7 6 5 4 3 2 1 0
if nargin==0
Eight=rand(1,8)>0.5;%没有输入则随机生成一个输入
Eight
end
if length(Eight)>8
Eight=Eight(1:8);
end
Eight=(Eight==1);%处理不合理的输入
IndexNum = 8-find(Eight, 1, 'first');%找到最高位的二进制编码
Str=dec2bin(IndexNum,3);
Three(1)= str2num(Str(1));
Three(2)=str2num(Str(2));
Three(3)=str2num(Str(3));
运行结果
>> [Three]=Eight2Three()
Eight =
0 0 1 1 0 0 0 1
Three =
1 0 1
%随机生成了高位在第5位的,那么输出 1 0 1
温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-05-05

相似回答