调用函数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写出脚本将输入的二进制序列进行单极性非归零编码、双极性不归零码、双极性归零码
时间: 2023-06-25 20:07:42 浏览: 38
以下是脚本代码:
s = [0 1 1 0 1 1];
n = 50;
base_wave(s, n, 'NRZ'); % 单极性非归零编码
base_wave(s, n, 'AMI'); % 双极性不归零码
base_wave(s, n, 'RZ'); % 双极性归零码
其中,base_wave函数已经定义好了,只需要传入不同的code_type参数即可实现不同的编码方式。输出的结果为三幅图像,分别为三种编码方式的波形图。
相关问题
修改调用函数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实现单极性归零码、双极性不归零码、双极性归零码三种码型的波形
修改后的代码如下:
```
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'` 时,表示双极性归零码。根据不同的码型,选择对应的波形输出即可。
通过递归函数计算S=1+2+3+n
好的,我可以帮你写一个递归函数来计算 S=1+2+3+...+n。
首先,我们需要考虑递归函数的基本情况。当 n 等于 1 时,S 就等于 1,因此递归函数的返回值应该为 1。
接下来,我们考虑递归情况。当 n 大于 1 时,我们可以将 S 表示为 S(n-1) + n。也就是说,S(n) 等于 S(n-1) 加上 n。
因此,我们可以写出如下的递归函数:
```
def calc_S(n):
if n == 1:
return 1
else:
return calc_S(n-1) + n
```
这个函数的作用是计算 S=1+2+3+...+n。当 n 等于 1 时,返回 1;否则,返回 calc_S(n-1) + n,也就是 S(n-1) 加上 n。
你可以调用这个函数来计算任意正整数 n 的值。比如,如果你想计算 S=1+2+3+...+10,你可以这样调用函数:
```
s = calc_S(10)
print(s)
```
这个程序的输出应该是 55,也就是 1+2+3+...+10 的和。