Matlab之求随机生成数字信号单极性不归零码的时域图并求功率谱
来源:互联网 发布:stc正在检测目标单片机 编辑:程序博客网 时间:2024/05/17 02:57
》这一题的重点就是首先把码元表示出来,这里我是使用了randi([0,1],1,N);
随机生成了0或者1,生产了N个随机数。
》接着表示基本码元,这里的是单极性不归零NRZ码元,所以gt1= ones(1,N_sample);%不归零。之后就应用基本码元函数来生成所需要的最后的序列。
》再根据所生成的每一个码元把基本码元添加到里面。
yt1((i-1)*N_sample+1:i*N_sample) = gt1;
》最后利用快速傅里叶变换fft得到频谱,再用conj求出共轭这就相当于求了频谱模的平方。接着除以时间N就可以得到功率谱。
》在生成的图我们会发现有许多的冲激,那么你就可以看看这些冲击都是在哪一些位置,试着去掉着一些冲激。
for i = 1:80
Pf1(i*100 + 1) = Pf1(i*10);
end
要生成别的码元表示只要稍微修改即可。
最后参考代码是:(图的显示的时候要多运行几次,最后效果才出来)
% communication principle
% Lab 6 problem 1
function single_polar_code
clear all;
format long;
Ts = 1; %码元周期
N_sample = 128; %每个码元抽样点数
dt = Ts/N_sample; %抽样的时间间隔
N = 100; %码元数
t = 0:dt:(N*N_sample-1)*dt;
% 基本码元 g(t) = 1
gt1 = ones(1,N_sample); %不归零
gt2 = [ones(1,N_sample/2),zeros(1,N_sample/2)]; %归零,占空比为0.5
gt3 = sinc(2*t(1:N_sample)/Ts); %sin(2*pi*t(1:N_sample)/Ts)/(2*pi*(1:N_sample)/Ts)
gt0 = zeros(1,N_sample);
%生成随机码元
random_code = randi([0,1],1,N);
%单极性波形的最后结果
yt1 = zeros(1,N*N_sample-1);
yt2 = zeros(1,N*N_sample-1);
yt3 = zeros(1,N*N_sample-1);
for i = 1:N
if random_code(i) == 1 %得到波形图
yt1((i-1)*N_sample+1:i*N_sample) = gt1; %单极性不归零NRZ波形
yt2((i-1)*N_sample+1:i*N_sample) = gt2; %单极性归零RZ波形
yt3((i-1)*N_sample+1:i*N_sample) = gt3; %双极性sinc波形
else
yt1((i-1)*N_sample+1:i*N_sample) = gt0; %没有这一行会经常报错
yt2((i-1)*N_sample+1:i*N_sample) = gt0;
yt3((i-1)*N_sample+1:i*N_sample) = (-1)*gt3;
end
end
%*********************************************************************
%求单极性不归零时域波形于波功率谱密度
figure(1)
subplot(2,1,1);
plot(t,yt1,'r');
title('单极性不归零NRZ波形');
xlabel('时间t/s');
axis([0,20,-0.5,1.5]); %画单极性不归零NRZ波形信号幅度频谱
grid;
Ft1 = fft(yt1);
Ft1 = fftshift(Ft1);
p = (Ft1.*conj(Ft1))/N; %计算功率谱密度
ff1 = (-length(Ft1)/2:length(Ft1)/2-1)/10;
Pf1 = 10*log10(p);
for i = 1:80
Pf1(i*100 + 1) = Pf1(i*10);
end
subplot(2,1,2);
plot(ff1,Pf1);
axis([-50,50,-50,50]); %画出单极性不归零NRZ波形功率谱密度
grid;
%*********************************************************************
%*********************************************************************
%求单极性归零时域波形与波功率谱密度
figure(2)
subplot(2,1,1);
plot(t,yt2,'r');
title('单极性归零RZ波形');
xlabel('时间t/s');
axis([0,20,-0.5,1.5]); %画出单极性归零RZ波形功率谱密度
grid;
Ft2 = fft(yt2);
Ft2 = fftshift(Ft2);
p2 = (Ft2.*conj(Ft2))/N; %计算功率谱密度
ff2 = (-length(Ft2)/2:length(Ft2)/2-1)/10;
Pf2 = 10*log10(p2);
for i = 1:80
Pf2(i*100 + 1) = Pf1(i*10);
end
subplot(2,1,2);
plot(ff2,Pf2);
axis([-50,50,-50,50]); %画出单极性不归零NRZ波形功率谱密度
grid;
%*********************************************************************
%*********************************************************************
%求双极性sinc波形时域波形与功率谱密度
figure(3)
subplot(2,1,1);
plot(t,yt3,'r');
title('双极性sinc波形');
xlabel('时间t/s');
axis([0,20,-1.5,1.5]); %画出双极性sinc波形功率谱密度
grid;
Ft3 = fft(yt3);
Ft3 = fftshift(Ft3);
p3 = (Ft3.*conj(Ft3))/20; %计算功率谱密度
ff3 = (-length(Ft3)/2:length(Ft3)/2-1)/10;
Pf3 = 10*log10(p3);
subplot(2,1,2);
plot(ff3,Pf3(1:length(Ft3)));
axis([-50,50,-50,60]); %画出单极性不归零NRZ波形功率谱密度
grid;
%**************************
- Matlab之求随机生成数字信号单极性不归零码的时域图并求功率谱
- 时域信号的功率谱估计
- 7.6应用于离散系统的Matlab基本函数 7.7 求离散系统的时域响应 频率特性分析
- 数字信号的调制及其功率谱特点
- MapReduce:随机生成100个小数并求最大值
- 时域信号的频谱、功率谱和功率谱密度计算
- matlab的功率谱计算
- Matlab--现代数字信号处理--白噪声时域分析
- matlab:求两个集合的 交集 和 并集
- 求图的最小生成树之--Prim算法实现
- matlab中周期图功率谱法的实现原理
- 介绍两种通过IQ数据快速画时域功率图的方法
- 数字信号处理中求频谱图与滤除噪声的问题
- Matlab随机函数的生成
- MATLAB时域信号的平移
- 时域分析的matlab实现
- matlab之生成不重复的随机整数
- 拟合圆并求圆心(matlab)
- .NET源码中的队列
- Mina airQQ聊天 客户端篇(三)
- Matlab之Gauss-Newton法
- Matlab之求导篇
- Matlab之使用linearization估计人口数量
- Matlab之求随机生成数字信号单极性不归零码的时域图并求功率谱
- hdu1717 小数化分数2
- Matlab之rand函数的使用
- 移动硬盘在电脑上不显示怎么办
- css修改样式
- Matlab之用最小二乘建立模型预测值以下例子使用1960,1970,1990和2000的人口估计1980的人口。分别用了直线估计和抛物线估计
- Matlab之采样定理
- 前端css样式修改
- Matlab之与图像有关的函数