资源简介

cmi、miller、双相码 matlab 编码、解码 simulink 仿真

资源截图

代码片段和文件信息

data=double(rand(110)>0.5); %原始信号这里用长度为10的随机01串

%以下是双相码
code2=[];    %初始编码
for i=1:length(data)
    if data(i)==0   %如果信号为0
        temp=[0 1];  %信号0的极性交替
    else 
        temp=[1 0];
    end
     code2=[code2 temp]; %加入新的两位编码
end
   
 
%以下是双相码解码
decode2=[];
r=0;
for i=1:2:length(code2)
   
    if code2(i)==0
        r=0; %信号0输出
    else 
        r=1;
    end
    decode2=[decode2 r];
end

%以下是画图

subplot(711)stairs(0:length(data)[data data(end)]‘linewidth‘2);
title(‘随机信号‘);set(gca‘YLim‘[-0.2 1.2]);set(gca‘XGrid‘‘on‘);
text((1:length(data))-0.60.5*ones(length(data)1)cellstr(num2str(data‘)));
subplot(712)stairs(0:length(code2)[code2 code2(end)]‘linewidth‘2);
title(‘双相码编码‘);set(gca‘YLim‘[-0.2 1.2]);set(gca‘XGrid‘‘on‘);
text((1:length(code2))-0.60.5*ones(length(code2)1)cellstr(num2str(code2‘)));
subplot(713)stairs(0:length(decode2)[decode2 decode2(end)]‘linewidth‘2);
title(‘双相码解码信号‘);set(gca‘YLim‘[-0.2 1.2]);set(gca‘XGrid‘‘on‘);
text((1:length(decode2))-0.60.5*ones(length(decode2)1)cellstr(num2str(decode2‘)));

%以下是密勒编码
code=[];    %初始编码
precode=0;  %初始前一个编码
predata=1;  %初始前一个信号
for ii=1:length(data)
    if data(ii)==1   %如果信号为1
        temp=[0 1];  %中间跳变
    elseif predata==0 %如果信号为0且前信号为0
        temp=[1 1];   %中间不跳变
    else              %如果信号为0且前信号为1
        temp=[0 0];   %中间不跳变
    end
    if precode==1    %如果前一个编码是1
        temp=1-temp; %将temp取反
    end
    code=[code temp]; %加入新的两位编码
    predata=data(ii); %更新前一个信号
    precode=code(end);%更新前一个编码
end
 
%以下是密勒解码
decode=[];
for ii=1:2:length(code) %两个两个编码进行解码
    if code(ii)==code(ii+1)
        temp=0;
    else
        temp=1;
    end 
    decode=[decode temp];
end
 
 
%以下是画图

subplot(714)stairs(0:length(code)[code code(end)]‘linewidth‘2);
title(‘密勒编码‘);set(gca‘YLim‘[-0.2 1.2]);set(gca‘XGrid‘‘on‘);
text((1:length(code))-0.60.5*ones(length(code)1)cellstr(num2str(code‘)));
subplot(715)stairs(0:length(decode)[decode decode(end)]‘linewidth‘2);
title(‘密勒解码信号‘);set(gca‘YLim‘[-0.2 1.2]);set(gca‘XGrid‘‘on‘);
text((1:length(decode))-0.60.5*ones(length(decode)1)cellstr(num2str(decode‘)));

%以下是CMI
code1=[];    %初始编码
cun=0; %码里1的个数
for i=1:length(data)
    if data(i)==1   %如果信号为1
        cun=cun+1;
        if rem(cun2)==0
        temp=[0 0];  %信号1的极性交替
        else 
        temp=[1 1];
        end
    else              %如果信号为0
        temp=[0 1];   %中间不跳变
    end
     code1=[code1 temp]; %加入新的两位编码
end
   
 
%以下是CMI解码
decode1=[];
r=0;
for i=1:2:length(code1)
    temp=code1(i)+code1(i+1);
    if temp==1
        r=0; %信号0输出
    else 
        r=1;
    end
    decode1=[decode1 r];
end


%以下是画图

subplot(716)stairs(0:length(code1)[code1 code1(end)]‘linewidth‘2);
title(‘CMI编码‘);set(gca‘YLim‘[-0.2 1.2]);set(gca‘XGrid‘‘on‘);
text((1:length(code1))-0.60.5*ones(length(code1)1)cellstr(num2str(code1‘)));
subplot(717)stairs(0:length(dec

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-01-15 18:43  基本码型\
     文件        3469  2018-12-23 18:19  基本码型\m1.m
     文件       20734  2019-01-15 18:43  基本码型\smi.slx

评论

共有 条评论