Ts = 1; N_sample = 128; dt = Ts / N_sample; N = 100; t = 0 : dt : (N * N_sample - 1) * dt; gt1 = ones(1, N_sample); gt2 = [ones(1, N_sample / 2), zeros(1, N_sample / 2)]; RAN = round(rand(1, N)); se1 = []; se2 = []; for i = 1 : N if RAN(i)==1 se1 = [se1 gt1]; se2 = [se2 gt2]; else se1 = [se1 zeros(1, N_sample)]; se2 = [se2 zeros(1, N_sample)]; end end subplot(4,1,1);plot(t,se1);grid on;axis([0 20 0 2]);title('NRZ'); subplot(4,1,3);plot(t,se2);grid on;axis([0 20 0 2]);title('RZ'); %功率谱密度计算 fft_se1 = fftshift(fft(se1)); fft_se2 = fftshift(fft(se2)); PE1 = 10 * log10(abs(fft_se1) .^ 2 / (N * Ts)); PE2 = 10 * log10(abs(fft_se2) .^ 2 / (N * Ts)); PEL1 = (-length(fft_se1) / 2 : length(fft_se1) / 2 - 1) / 10; PEL2 = (-length(fft_se2) / 2 : length(fft_se2) / 2 - 1) / 10; subplot(4,1,2);plot(PEL1,PE1);grid on;axis([0 20 -1.5 1.5]);title('NRZ的功率谱'); subplot(4,1,4);plot(PEL2,PE2);grid on;axis([0 20 -1.5 1.5]);title('RZ的功率谱');将这段matlab代码替换,但是不改变原来的意思
时间: 2023-02-06 20:40:24 浏览: 125
这段代码的作用是生成并绘制 NRZ 和 RZ 信号的时域和频域信息。
具体来说,它首先定义了一些参数,其中 Ts 是信号的采样间隔,N_sample 是每个信号段的采样点数,dt 是采样间隔的倒数,N 是信号段的个数。然后,它使用 t 变量生成了一组时间点,gt1 和 gt2 分别是 NRZ 和 RZ 信号的单位样本,RAN 是一个随机序列,用于决定哪些信号段是有信号的,哪些信号段是无信号的。
接下来,它使用循环生成了 NRZ 和 RZ 信号,并使用 subplot 函数将它们绘制在图中。最后,它使用 fft 函数对信号进行快速傅里叶变换,并使用 fftshift 函数将频谱移动到正中间,再使用 10 * log10 函数将信号的幅值转换为以 dB 为单位的功率值,最后使用 subplot 函数将频域信息绘制在图中。
相关问题
close all; Ts=1;%码元周期 N_sample=17;%每个码元抽样点数 eye_num=8;%眼图的个数 alpha=1;%滚降系数为1 N_data=1000;%码元数 dt=Ts/N_sample;%抽样时间间隔 t=-3*Ts:dt:3*Ts;%设置采样 %%产生双极性数字信号 d=sign(randn(1,N_data));%randn随机生成数字 sign函数进行一个判断,判断其正负 xt=sigexpand(d,N_sample)%对d进行扩张,每个间隔加入N_sample-1个零 %基带系统冲击响应(升余弦) ht=sinc(t/Ts).*(cos(alpha*pi*t/Ts))./(1-4*alpha^2*t.^2/Ts^2+eps);%升余弦滚降特性的公式 st=conv(xt,ht);%卷积函数 tt=-3*Ts:dt:(N_data+3)*N_sample*dt-dt;%设置采样 %% 绘制接收端波形 subplot(2,1,1); plot(tt,st); axis([0 20 -1.2 1.2]);%横坐标范围,纵坐标范围 xlabel('t/Ts'); ylabel('基带信号'); %% 绘制眼图 subplot(2,1,2); ss=zeros(1,eye_num*N_sample);%建立零矩阵 ttt=0:dt:eye_num*N_sample*dt-dt;%采样间隔 for k=3:50 ss=st(k*N_sample+1:(k+eye_num)*N_sample); drawnow;%将还未处理完的图像实时的显示出来,实时看到图像的每一步变化情况 plot(ttt,ss); hold on;%新画图像之后不覆盖原图像 end xlabel('t/Ts'); ylabel('基带信号眼图') %% 扩展函数,转换为1维矩阵进行卷积 function[out]=sigexpand(d,M); N=length(d);%基带信号码元长度 out=zeros(M,N); out(1,:)=d;%将零矩阵第一行换成基带信号中的8个码元 out=reshape(out,1,M*N);% end 给出用MATLAB代码实现思路的分析
这段MATLAB代码主要用于产生双极性数字信号并绘制眼图和波形图。首先通过随机生成数字和sign函数进行判断,产生双极性数字信号d,然后对d进行扩张,每个间隔加入N_sample-1个零,得到扩张后的基带信号xt。接着利用升余弦滚降特性的公式生成基带系统冲击响应ht,再通过卷积函数得到接收端波形st。在绘制接收端波形图的同时,利用for循环和眼图的采样间隔,绘制眼图。最后给出一个扩展函数,将零矩阵转换为1维矩阵进行卷积。
阅读全文