matlab实现单、双极性;归零、不归零码波形编码,并显示其频谱图,需要代码
时间: 2024-02-03 07:04:11 浏览: 195
以下是Matlab实现单、双极性;归零、不归零码波形编码的代码,并显示其频谱图:
单极性不归零码(NRZ):
```matlab
% 设置参数
bitrate = 10; % 比特率
T = 1 / bitrate; % 采样时间
fs = 100 * bitrate; % 采样频率
L = 1000; % 仿真时间
% 生成比特流
bits = randi([0, 1], 1, L * bitrate);
% NRZ 编码
signal = 2 * bits - 1;
% 绘制波形图和频谱图
t = 0 : T : L - T;
subplot(2, 1, 1);
plot(t, signal);
title('NRZ Waveform');
xlabel('Time (s)');
ylabel('Amplitude');
ylim([-1.5, 1.5]);
subplot(2, 1, 2);
f = -fs / 2 : fs / (L - 1) : fs / 2;
plot(f, abs(fftshift(fft(signal))));
title('NRZ Spectrum');
xlabel('Frequency (Hz)');
ylabel('Magnitude');
ylim([0, L/4]);
```
单极性归零码(RZ):
```matlab
% 设置参数
bitrate = 10; % 比特率
T = 1 / bitrate; % 采样时间
fs = 100 * bitrate; % 采样频率
L = 1000; % 仿真时间
% 生成比特流
bits = randi([0, 1], 1, L * bitrate);
% RZ 编码
signal = zeros(1, L * fs);
for i = 1 : L * bitrate
signal((i - 1) * fs / bitrate + 1 : i * fs / bitrate) = ...
bits(i) * [ones(1, fs / (2 * bitrate)), zeros(1, fs / (2 * bitrate))];
end
% 绘制波形图和频谱图
t = 0 : T : L - T;
subplot(2, 1, 1);
plot(t, signal(1 : L * bitrate));
title('RZ Waveform');
xlabel('Time (s)');
ylabel('Amplitude');
ylim([-1.5, 1.5]);
subplot(2, 1, 2);
f = -fs / 2 : fs / (L - 1) : fs / 2;
plot(f, abs(fftshift(fft(signal))));
title('RZ Spectrum');
xlabel('Frequency (Hz)');
ylabel('Magnitude');
ylim([0, L/4]);
```
双极性不归零码(AMI):
```matlab
% 设置参数
bitrate = 10; % 比特率
T = 1 / bitrate; % 采样时间
fs = 100 * bitrate; % 采样频率
L = 1000; % 仿真时间
% 生成比特流
bits = randi([0, 1], 1, L * bitrate);
% AMI 编码
signal = zeros(1, L * fs);
v = 1;
for i = 1 : L * bitrate
if bits(i) == 1
signal((i - 1) * fs / bitrate + 1 : i * fs / bitrate) = v;
v = -v;
end
end
% 绘制波形图和频谱图
t = 0 : T : L - T;
subplot(2, 1, 1);
plot(t, signal(1 : L * bitrate));
title('AMI Waveform');
xlabel('Time (s)');
ylabel('Amplitude');
ylim([-1.5, 1.5]);
subplot(2, 1, 2);
f = -fs / 2 : fs / (L - 1) : fs / 2;
plot(f, abs(fftshift(fft(signal))));
title('AMI Spectrum');
xlabel('Frequency (Hz)');
ylabel('Magnitude');
ylim([0, L/4]);
```
双极性归零码(Bipolar RZ):
```matlab
% 设置参数
bitrate = 10; % 比特率
T = 1 / bitrate; % 采样时间
fs = 100 * bitrate; % 采样频率
L = 1000; % 仿真时间
% 生成比特流
bits = randi([0, 1], 1, L * bitrate);
% Bipolar RZ 编码
signal = zeros(1, L * fs);
v = 1;
for i = 1 : L * bitrate
if bits(i) == 1
signal((i - 1) * fs / bitrate + 1 : i * fs / bitrate) = v;
v = 0;
end
end
% 绘制波形图和频谱图
t = 0 : T : L - T;
subplot(2, 1, 1);
plot(t, signal(1 : L * bitrate));
title('Bipolar RZ Waveform');
xlabel('Time (s)');
ylabel('Amplitude');
ylim([-1.5, 1.5]);
subplot(2, 1, 2);
f = -fs / 2 : fs / (L - 1) : fs / 2;
plot(f, abs(fftshift(fft(signal))));
title('Bipolar RZ Spectrum');
xlabel('Frequency (Hz)');
ylabel('Magnitude');
ylim([0, L/4]);
```
以上是Matlab实现单、双极性;归零、不归零码波形编码的代码,并显示其频谱图。
阅读全文