⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 manchest.m

📁 matlab Manchest编码实现的m 文件
💻 M
字号:
clear all;
close all;
%双相码波形及功率谱密度

L=16;%每个码元的采样点数
TS=1;%码元周期
x=round(rand(1,1000));%产生0,1随机序列
t=0:1/L:length(x);%定义对应时间序列
for i=1:length(x)%进行编码
    if(x(i)==1)%若输入信息为1
        for j=1:L/2;
            y(L/2*(2*i-2)+j)=1;%定义前半时间为1
            y(L/2*(2*i-1)+j)=-1;%定义后半时间为-1
        end
    else
        for j=1:L/2 %反之,输入信息为0
            y(L/2*(2*i-2)+j)=-1;%定义前半时间为-1
             y(L/2*(2*i-1)+j)=1;%定义后半时间为1
        end;end;end
y=[y,x(i)];
figure(1)
subplot(221)
plot(t,y); 
axis([0 20 -1.5 1.5]);xlabel('双相码波形');
[f st1f]=T2F(t,y);
subplot(222)
plot(f,10*log10(abs(st1f+eps).^2/TS));grid
axis([-5 5 -40 20]);xlabel('f');ylabel('双相码功率谱密度(dB/Hz)');


%密勒码波形及功率谱密度
t=0:1/L:length(x);
i=1; %由于第一码元的编码不定,直接给出
if(x(i)==1) %输入为1,则
    for j=1:L/2;
        y2(L/2*(2*i-2)+j)=1;%前半时间为1
        y2(L/2*(2*i-1)+j)=-1;%后半时间为-1
    end
else                       %反之,输入为0
    for j=1:L;
        y2(L*(i-1)+j)=1;%所有时间为1
    end
end
for i=2:length(x)%开始进行密勒编码
    if(x(i)==1)  %输入信息为1
        for j=1:L/2
            y2(L/2*(2*i-2)+j)=y2(L/2*(2*i-3)+L/4);%前半时间与前一码元后半时间取值相同
            y2(L/2*(2*i-1)+j)=-y2(L/2*(2*i-2)+j);%后半时间与前半时间相反
        end
    else
        if(x(i-1)==1)%反之,若前一信息为1,输入信息0
            for j=1:L
                y2(L*(i-1)+j)=y2(L/2*(2*i-3)+L/4);%所有时间与前一码元后半时间值相同
            end
        else    %否则,前一信息为0
            for j=1:L
                y2(L*(i-1)+j)=-y2(L/2*(2*i-3)+L/4);%所有时间与前一码元后半时间值相反
            end
        end
    end
end
y2=[y2 x(i)];
subplot(223)
plot(t,y2);
axis([0 20 -1.5 1.5]);
xlabel('Miller码波形');
[f st2f]=T2F(t,y2);
subplot(224)
plot(f,10*log10(abs(st2f+eps).^2/TS));grid
axis([-5 5 -40 20]);xlabel('f');ylabel('Miller功率谱密度(dB/Hz)');




            
            
     

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -