matlab用单极性非归零码来表示二元信息序列10110001,画出波形示意图,写成函数的形式, 10110001作为参数传递
时间: 2023-08-06 13:24:43 浏览: 189
好的,我可以为您解答这个问题。首先,我们需要了解一下单极性非归零码的编码规则。
在单极性非归零码中,每个0码元都对应一个负脉冲,每个1码元都对应一个正脉冲。而且,相邻的1码元之间会加入一个额外的脉冲。因此,对于二元信息序列10110001,其单极性非归零码的编码规则如下:
1. 第一个码元是1,因此输出一个正脉冲;
2. 第二个码元是0,因此输出一个负脉冲;
3. 第三个码元是1,因此输出一个正脉冲;
4. 第四个码元是1,因此输出一个正脉冲,并在前一个正脉冲后加入一个额外的正脉冲;
5. 第五个码元是0,因此输出一个负脉冲;
6. 第六个码元是0,因此输出一个负脉冲,并在前一个负脉冲后加入一个额外的负脉冲;
7. 第七个码元是0,因此输出一个负脉冲;
8. 第八个码元是1,因此输出一个正脉冲,并在前一个负脉冲后加入一个额外的正脉冲。
根据上述规则,我们可以写出一个matlab函数,用于生成任意长度的二元信息序列的单极性非归零码,并画出其波形示意图。函数形式如下:
```matlab
function [code] = unipolar_nrz(data)
% 用单极性非归零码来表示二元信息序列data,输出单极性非归零码code
% data: 二元信息序列,例如[1 0 1 1 0 0 0 1]
n = length(data);
code = zeros(1, n*2); % 初始化单极性非归零码
for i = 1:n
if data(i) == 1
code((i-1)*2+1:i*2) = [1 1]; % 输出一个正脉冲,并在前一个正脉冲后加入一个额外的正脉冲
elseif data(i) == 0
code((i-1)*2+1:i*2) = [-1 -1]; % 输出一个负脉冲,并在前一个负脉冲后加入一个额外的负脉冲
end
end
stairs(code); % 画出单极性非归零码波形
axis([0 n*2 -2 2]); % 设置坐标轴范围
end
```
使用这个函数,我们可以很方便地生成任意长度的二元信息序列的单极性非归零码,并画出其波形示意图。例如,对于二元信息序列10110001,我们可以使用以下代码调用该函数:
```
data = [1 0 1 1 0 0 0 1]; % 二元信息序列10110001
unipolar_nrz(data); % 生成并画出单极性非归零码波形
```
运行上述代码,即可得到该二元信息序列的单极性非归零码的波形示意图。
阅读全文