NRZ/RZ信号,脉冲成形

close all;
clear all;
% 生成多个码元序列
Ts = 1;                          % 码元周期
Rs = 1/Ts;                     % 码元速率
N_sample = 10;            % 单个码元抽样点数
fs = N_sample*Rs;       % 采样频率
dt = Ts/N_sample;        % 抽样时间间隔
N = 6;                 % 本次仿真的码元总数
sig_len=N *N_sample;    % 本次仿真的采样点数
gt1 = ones(1, N_sample);
gt2 = [ones(1, N_sample / 2), zeros(1, N_sample / 2)]; % RZ
gt3 = [-ones(1, N_sample / 2), zeros(1, N_sample / 2)]; % RZ
% RAN = round(rand(1, N));% 生成20个随机数
RAN=[0,1,0,1,0,1];
se1 = [];               % 存放NRZ序列
se2 = [];               % 存放RZ序列
for i = 1 : N % 生成序列
   if RAN(i)==1
       se1 = [se1 gt1];
       se2 = [se2 gt2];
   else
       se1 = [se1 zeros(1, N_sample)];
       se2 = [se2 gt3];
   end
end
%% 1.观察NRZ序列与RZ序列的频谱
fft_se1=fftshift(abs(fft(se1,sig_len*10)));
fft_se2=fftshift(abs(fft(se2,sig_len*10)));
figure(1)
subplot(2,2,1);plot(se1);ylim([-1.5 1.5]);grid on;title('NRZ序列');
subplot(2,2,2);plot(fft_se1);grid on;title('NRZ序列的频谱');
subplot(2,2,3);plot(se2);ylim([-1.5 1.5]);grid on;title('RZ序列');
subplot(2,2,4);plot(fft_se2);grid on;title('RZ序列的频谱');

结论,由下图可见,NRZ的频谱相较于RZ的频谱要宽。即说明RZ编码的效率要低一些。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 首先,需要使用 `linspace` 函数生成一组时间点,例如: ``` t = linspace(0, 1, 1000); % 生成时间序列,每秒 1000 个点 ``` 然后,可以使用 `square` 函数生成 NRZ 信号,例如: ``` NRZ = square(2*pi*t*10); % 生成 NRZ 信号,频率为 10Hz ``` 可以使用 `plot` 函数绘制 NRZ 信号的时域图像,例如: ``` plot(t, NRZ); % 绘制 NRZ 信号的时域图像 ``` 可以使用 `fft` 函数计算 NRZ 信号的频域信息,例如: ``` NRZ_FFT = fft(NRZ); % 计算 NRZ 信号的频域信息 ``` 可以使用 `plot` 函数绘制 NRZ 信号的频域图像,例如: ``` plot(abs(NRZ_FFT)); % 绘制 NRZ 信号的频域图像 ``` RZ 信号的生成和绘制方法类似,可以使用 `pulstran` 函数生成 RZ 信号,例如: ``` t1 = linspace(0, 1, 1000); % 生成时间序列,每秒 1000 个点 RZ = pulstran(t1, [0 0.5], [1 -1], 10); % 生成 RZ 信号,频率为 10Hz ``` 然后可以使用 `plot` 函数绘制 RZ 信号的时域图像,例如: ``` plot(t1, RZ); % 绘制 RZ 信号的时域图像 ``` 可以使用 `fft` 函数计 ### 回答2: 以下是生成并绘制NRZRZ信号的时域和频域信息的MATLAB代码: ```matlab % 生成NRZ信号 T = 1; % 位周期 bit_duration = 0.1; % 位持续时间 bit_sequence = [1 0 0 1 1 0 1]; % 位序列 t = 0:bit_duration/100:bit_duration; % 时间点 nrz = zeros(1, length(t) * length(bit_sequence)); % 初始化NRZ信号 for i = 1:length(bit_sequence) if bit_sequence(i) == 1 nrz((i-1)*length(t)+1:i*length(t)) = 1; end end % 绘制NRZ信号的时域信息 figure; subplot(2, 1, 1); plot(0:length(nrz)-1, nrz); xlabel('时间'); ylabel('振幅'); title('NRZ信号的时域信息'); % 绘制NRZ信号的频谱信息 nrz_freq = abs(fft(nrz)); f = (0:length(nrz_freq)-1) / max(length(nrz_freq)-1); subplot(2, 1, 2); plot(f, nrz_freq); xlabel('频率'); ylabel('幅度'); title('NRZ信号的频域信息'); % 生成RZ信号 rz = zeros(1, length(t) * length(bit_sequence)); % 初始化RZ信号 for i = 1:length(bit_sequence) if bit_sequence(i) == 1 rz((i-1)*length(t)+1:(i-1)*length(t)+length(t)/2) = 1; else rz((i-1)*length(t)+length(t)/2+1:i*length(t)) = -1; end end % 绘制RZ信号的时域信息 figure; subplot(2, 1, 1); plot(0:length(rz)-1, rz); xlabel('时间'); ylabel('振幅'); title('RZ信号的时域信息'); % 绘制RZ信号的频谱信息 rz_freq = abs(fft(rz)); subplot(2, 1, 2); plot(f, rz_freq); xlabel('频率'); ylabel('幅度'); title('RZ信号的频域信息'); ``` 这段代码首先生成了一个NRZ信号和一个RZ信号,然后分别绘制了它们的时域信息和频域信息。NRZ信号的时域信息中,每个1都被表示为高电平,每个0都被表示为低电平。频域信息中,显示了NRZ信号的频谱内容。同样,RZ信号的时域信息中,每个1都被表示为高电平,每个0都被表示为低电平加上负脉冲,频域信息也被绘制出来。 ### 回答3: 以下是生成并绘制NRZRZ信号的时域和频域信息的Matlab代码: %生成NRZ信号 T = 1; %信号周期为1秒 bit_duration = 0.1; %比特持续时间为0.1秒 t = 0:0.001:T; %时间采样点 bit = [0 1 0 1]; %数据比特序列 nrz_signal = []; for i = 1:length(bit) if bit(i) == 1 nrz_signal = [nrz_signal ones(1, bit_duration*1000)]; else nrz_signal = [nrz_signal zeros(1, bit_duration*1000)]; end end %绘制NRZ信号的时域图像 figure; subplot(2,2,1); plot(t, nrz_signal); title('NRZ信号的时域图像'); xlabel('时间(秒)'); ylabel('幅度'); %绘制NRZ信号的频域图像 subplot(2,2,2); freq = linspace(-1000, 1000, length(t)); nrz_spectrum = abs(fftshift(fft(nrz_signal))); plot(freq, nrz_spectrum); title('NRZ信号的频域图像'); xlabel('频率(Hz)'); ylabel('幅度'); %生成RZ信号 rz_signal = []; for i = 1:length(bit) if bit(i) == 1 rz_signal = [rz_signal ones(1, bit_duration*500) zeros(1, bit_duration*500)]; else rz_signal = [rz_signal zeros(1, bit_duration*1000)]; end end %绘制RZ信号的时域图像 subplot(2,2,3); plot(t, rz_signal); title('RZ信号的时域图像'); xlabel('时间(秒)'); ylabel('幅度'); %绘制RZ信号的频域图像 subplot(2,2,4); rz_spectrum = abs(fftshift(fft(rz_signal))); plot(freq, rz_spectrum); title('RZ信号的频域图像'); xlabel('频率(Hz)'); ylabel('幅度'); 代码中,我们首先设置了信号的周期T和比特的持续时间bit_duration,并且给出了数据比特序列bit。然后,我们利用每个比特的值来生成NRZRZ信号。对于NRZ信号,我们通过在每个比特持续时间内输出1或0来生成信号。对于RZ信号,我们通过在前一半比特持续时间内输出1,后一半持续时间内输出0来生成信号。最后,我们绘制了NRZRZ信号的时域和频域图像。在频域图像中,我们使用傅里叶变换来将信号转换到频域,并使用fftshift函数将频谱图中的零频移到中心。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值