修改下列代码并给每一行代码都添加详细的中文注释,使其能在matlab中输出好看的波形。clc clear all; close all; %% 4级m序列的生成 % 模2加运算中的 '0' 、'1'分别对应±1乘运算中的'1'、 '-1' N=4; %m序列有4位 m=-ones(N,1);% ones:创建全部为1的数组;m序列的4位贮存单元赋初值为-1,即模2加中‘1’; temp=-ones(N,1); out=-ones(2^N-1,1);%m序列输出值赋初值-1 for k=1:(2^N-1) % k从1~15循环 if m(4,1)==1 %将-1/+1转换成0/1 out(k,1)= 0; else out(k,1)= 1; end temp(2:4,1)=m(1:3,1);%移到下一位 temp(1,1)=m(3,1)*m(4,1); m=temp; end x(1)=1;show(1)=out(1);p=2; for i=2:length(out) %将其以方波形式显示出来 if((out(i)~=out(i-1))) x(p)=i; show(p)=out(i-1); x(p+1)=i+0.01; show(p+1)=out(i); p=p+2; else show(p)=out(i); x(p)=i; p=p+1; end end plot(x,show,'b');%作图 xlabel('n'); ylabel('u(n)'); axis([0 16 -0.2 1.2]);
时间: 2024-04-28 14:23:12 浏览: 84
逐行注释MATLAB代码,一维情况的EKF滤波,代码与详细注释
clc % 清空命令窗口
clear all % 清空工作空间的变量
close all % 关闭所有图形窗口
%% 4级m序列的生成
% 模2加运算中的 '0' 、'1'分别对应±1乘运算中的'1'、 '-1'
N=4; % 定义m序列长度为4位
m=-ones(N,1); % m序列的4位存储单元赋初值为-1,即模2加中‘1’;
temp=-ones(N,1); % 临时变量temp的4位存储单元赋初值为-1
out=-ones(2^N-1,1);%m序列输出值赋初值-1,2^N-1为输出位数
for k=1:(2^N-1) % k从1~15循环
if m(4,1)==1 % 将-1/+1转换成0/1
out(k,1)= 0;
else
out(k,1)= 1;
end
temp(2:4,1)=m(1:3,1); % 将m序列的前三位移到下一位
temp(1,1)=m(3,1)*m(4,1); % 第一位等于m序列的第三位乘上第四位
m=temp; % 更新m序列
end
x(1)=1; % 定义x的第一个元素为1
show(1)=out(1); % 定义show的第一个元素为m序列的第一个元素
p=2;
for i=2:length(out) % 将其以方波形式显示出来
if((out(i)~=out(i-1))) % 若两个连续的输出值不同
x(p)=i; % 则将x的第p个元素赋为i
show(p)=out(i-1); % 将show的第p个元素赋为上一个输出值
x(p+1)=i+0.01; % 将x的第p+1个元素赋为i+0.01,使得方波更加平滑
show(p+1)=out(i); % 将show的第p+1个元素赋为当前输出值
p=p+2; % 更新p
else % 若两个连续的输出值相同
show(p)=out(i); % 则将show的第p个元素赋为当前输出值
x(p)=i; % 将x的第p个元素赋为i
p=p+1; % 更新p
end
end
plot(x,show,'b'); % 作图,颜色为蓝色
xlabel('n'); % 设置x轴标签
ylabel('u(n)'); % 设置y轴标签
axis([0 16 -0.2 1.2]); % 设置坐标轴范围
阅读全文