修改调用函数function out=base_wave_nrz(s,n) %s=[ 0 1 1 0 1 1]; %n=50; x1=ones(1,n); x0=zeros(1,n); y=zeros(1,n); sn=length(s); out=zeros(1,snn); for i=1:sn if s(i)==1 y=x1; else y=x0; end out(1,((i-1)n+1:in))=y; end t= (1:snn)/n; text='单极性非归零 '; plot(t,out),ylabel(text); end实现单极性归零码、双极性不归零码、双极性归零码三种码型的波形
时间: 2023-07-14 13:12:03 浏览: 41
修改后的代码如下:
```
function out = base_wave(s, n, code_type)
%s=[0 1 1 0 1 1];
%n=50;
%x1=ones(1,n);
%x0=zeros(1,n);
%y=zeros(1,n);
sn = length(s);
out = zeros(1, sn*n);
for i = 1:sn
if code_type == 'NRZ' % 单极性非归零码
if s(i) == 1
y = ones(1, n);
else
y = zeros(1, n);
end
elseif code_type == 'AMI' % 双极性不归零码
if s(i) == 1
y = ones(1, n);
else
y = -ones(1, n);
end
else % 双极性归零码
if s(i) == 1
y = [ones(1, n/2), zeros(1, n/2)];
else
y = [-ones(1, n/2), zeros(1, n/2)];
end
end
out(1, ((i-1)*n+1:i*n)) = y;
end
t = (1:sn*n)/n;
if code_type == 'NRZ'
text = '单极性非归零 ';
elseif code_type == 'AMI'
text = '双极性不归零 ';
else
text = '双极性归零 ';
end
plot(t, out), ylabel(text);
end
```
其中,新增了一个参数 `code_type`,用于指定码型。当 `code_type` 等于 `'NRZ'` 时,表示单极性非归零码;当 `code_type` 等于 `'AMI'` 时,表示双极性不归零码;当 `code_type` 不等于 `'NRZ'` 或 `'AMI'` 时,表示双极性归零码。根据不同的码型,选择对应的波形输出即可。