如何画OFDM频谱图
文章目录
- 前言
- 一、为什么是sinc函数
- 二、matlab绘制时域图形
- 三、matlab绘制频域图形
- 1.直接对时域波形做fft
- 2.时域补零
- 3.初始相位的影响
- 总结
前言
常见于各种教材、论文的OFDM频谱图一般长这样(13个子载波),即多个sinc函数的叠加:
而网上查了些博客,基本是直接画sinc函数来绘制OFDM频谱,没找到用fft对时域信号做处理来实现的,所以总结一下。
一、为什么是sinc函数
因为实际OFDM信号不可能是无限长的,而有限长的OFDM信号实际可以看做与矩形窗函数的乘积,矩形窗函数可以定义如下:
对其进行傅里叶变换:
由于时域相乘等效于频域卷积,因此OFDM信号反映到频谱,就成为各个不同位置的冲击响应与SINC函数的卷积。
二、matlab绘制时域图形
Fs=1000;
N=1024; %总的子载波数
T=N/Fs; %信号绘制为一个周期的长度
x=0:1/Fs:T-1/Fs;
Numscr=4; %绘制的子载波数量
% s_data=1;
s_data=(1+1i)/sqrt(2); %初始相位
ini_phase=repmat(s_data,1,T*Fs);
for k=0:Numscrfor n=0:T*Fs-1y(k+1,n+1)=ini_phase(n+1)*exp(1i*2*pi*k*n/N);end
end
这里比较简单,照OFDM数学符号写一下代码就行:
三、matlab绘制频域图形
1.直接对时域波形做fft
代码如下:
f=(0:T*Fs-1)/T-Fs/2;
for k=0:Numscry_fft(k+1,:)=abs(fftshift(fft(y1(k+1,:))))/N;
end
figure(2)
plot(f,y_fft(1,:),f,y_fft(2,:),f,y_fft(3,:),f,y_fft(4,:),f,y_fft(5,:));
grid on;
xlim([-10,10]);
xlabel('频率/Hz');
ylabel('幅度');
结果:
与理想的sinc波形相去甚远,这样肯定不行。若在时域进行补零,如下。
2.时域补零
补1024*3个0:
a=3;
y1=[y,zeros(5,a*1024)];
f=(0:(a+1)*T*Fs-1)/T/(a+1)-Fs/2;
for k=0:Numscry_fft(k+1,:)=abs(fftshift(fft(y1(k+1,:))))/N;
end
figure(2)
plot(f,y_fft(1,:),f,y_fft(2,:),f,y_fft(3,:),f,y_fft(4,:),f,y_fft(5,:));
grid on;
xlim([-10,10]);
xlabel('频率/Hz');
ylabel('幅度');
结果已比较接近,但还是不圆滑:
补1024*20个0,结果已比较理想:
原因分析:时域尾部补零等效于频域插值,让频谱图形变得圆滑。
3.初始相位的影响
虽然图形以及比较理想,但相比文章开头的图,还是有不一样之处:我们绘制的频谱图幅值都是大于等于0的。当然必然是大于等于0的,因为我们是取模进行绘制,也是正确的,但是怎么获得这种图:
要绘制这样的图形,取模肯定是不行的,我们可以尝试取实部,在上面那个初始相位为π/4的情况下,即:
s_data=(1+1i)/sqrt(2); %初始相位
实部图形:
若把初始相位设置为0,即:
s_data=1; %初始相位
则时域图形:
频谱图:
获得了比较接近的频谱图。
总结
1.时域尾部补零才能实现近似的窗函数的作用,也可以理解为时域补零等效为频域插值,插值的点数由补零个数决定,如原来为1024个点,补3072个0,那频谱的点也会扩充为4倍,实现插值。
2.OFDM的初始相位会对频谱的相位造成影响,但不会对频谱的幅值造成影响,这也比较容易理解,结合傅里叶变换的公式就可以。
如何画OFDM频谱图相关推荐
- FFT快速傅里叶变换的应用——画单边频谱图matlab
FFT快速傅里叶变换的应用--画单边频谱图matlab 快速傅里叶变换在数字信号处理里用的十分广泛,在matlab仿真中,处理信号的时频域变换十分有效,这里结合两个做过的仿真,来说一说fft的应用:画 ...
- 读 wav 音频画 mel 频谱图(python)
代码功能: 读取wav音频文件 以10s为一个单位截取音频,只截取每个音频的前60s 调用librosa音频处理函数对10s音频进行mel频谱操作 调用Matplotlib图像处理函数进行频谱图的绘画 ...
- 信号处理趣学D8——关于拉氏变换和频谱图的那些事儿
最近小虎在网课上被老师问到编程写出一指数函数y=Ae−aty=Ae^{-at}y=Ae−at的频谱图,当时鼓捣了1个多钟???以前是画过bode图,bode的幅频图是对数幅频图.应该也可以用伯德图直接 ...
- wav格式的音频信号的时域和时频谱图分析
首先,录入文件 [wave,f]=audioread('文件路径及名称.wav'); wave存储为音频信号的时域波形幅度值,f为采样频率 n=length(wave); n为文件总采样点数 t=(1 ...
- pyhton 画出音频文件的波形图和频谱图
pyhton 画出音频文件的波形图和频谱图 # -*- coding:utf-8 -*- import wave import struct import numpy as np import mat ...
- 信号处理之FFT(如何求幅度、相位、画频谱图)
信号处理,可以理解为对信号进行某种加工或变换来达到削弱信号中的多余内容.滤除混杂的噪声和干扰.将信号变换成容易分析与识别的形式,便于估计和选择它的特征参量等目的. 快速傅里叶变换(FFT)是信号处理的 ...
- python画方波_python实现周期方波信号频谱图
在学习傅里叶变换的时候遇到了求周期方波信号频谱图的例子,在书上和网上查阅了一些资料,发现大都是讨论的都是下图左边的周期信号的频谱,课程老师的PPT中也只列出了另一种周期信号频谱图的结论,没有在进行傅里 ...
- matlab fft画频谱图,matlab 用 fft画频谱
matlab 用 fft画频谱 关注:193 答案:2 手机版 解决时间 2021-01-19 14:14 提问者挥映在沉默里的渲染 2021-01-18 18:27 在这样一段程序中 clear ...
- 不愧是摸鱼高手Python matplotlib 绘制频谱图都会,能怪老板不管
复习回顾 matplotlib 是Python专门用来绘制渲染的模块,其底层主要分为脚本层.美工层和后端.脚本层为我们提供常见图形绘制如折线.柱状.直方.饼图.以往文章 这么详细的Python mat ...
- 深入浅出解释FFT(七)——fft求频谱图和功率谱密度图
频谱图: 声音频率与能量的关系用频谱表示.在实际使用中,频谱图有三种,即线性振幅谱.对数振幅谱.自功率谱.线性振幅谱的纵坐标有明确的物理量纲,是最常用的.对数振幅谱中各谱线的振幅都作了对数计算,所以其 ...
最新文章
- centos 7 安装tomcat
- 传感器为什么在低量程偏差大_传感器复习
- 【Python基础】Python 10 个习惯用法,看看你都知道不?
- realloc函_realloc(重新分配内存空间的函数)
- 最新!2022互联网薪酬盘点,你达标了吗?
- 一行Python代码能干什么?惊了!
- 计算机的音量打不开,电脑的音量控制打不开怎么办
- 8Uftp连接服务器错误
- 开启Google Chrome浏览器加速模式
- springboot基于webrtc和janus的视频会议流程图
- 程序员 2015 年工作总结
- 迪士尼挖角波士顿动力,耗时3年打造漫威英雄机器人,1:1复刻效果堪比CG
- canvas学习笔记
- Excel如何将行高列宽等格式设置一并全复制?
- 三大优势让百度云智能推荐产品与众不同
- 使用多媒体API枚举音频设备 - zgl7903的专栏 - CSDNBlog
- 抗旋转matlab算法,抗旋转核心训练:2个动作推荐
- linux 删除文件夹admin 报错 Linux cannot remove is a directory
- 1.4-----PCB设计?(电路设计)确定方案
- BIM模型文件下载——某公司办公综合楼项目案例模型
热门文章
- poi操作ppt创建表格
- 如何access表中加一行_EXCEL里面制作好的表格,怎么在表格中加一行呢?
- mac虚拟机服务器设置u盘启动不了怎么办,苹果MacBook Air u盘启动不了怎么办?
- 微信.gif表情包保存到本地
- 构建会员运营管理系统 帮助零售企业数字化转型
- 会员数据化运营应用场景与分析模型
- SpringBoot非官方教程 | 第二十五篇:2小时学会springboot
- Spring Cloud和Spring Boot高级视频
- nodeJs 实现邮箱验证码注册
- 服务器启动服务很慢_哦,地方很好,为什么教育对于启动自动驾驶服务至关重要...