Matlab标准FFT绘制方法(详细注释)
创作时间:
作者:
@小白创作中心
Matlab标准FFT绘制方法(详细注释)
引用
CSDN
1.
https://m.blog.csdn.net/m0_56841583/article/details/144265824
Matlab官方文档中有fft的使用例程。
命令行窗口输入help fft,回车。
点击fft的参考页超链接,跳转到页面。
这是一个带有噪声的信号示例,为了更好地分析,将噪声部分删除,并将代码打下来,便于大家使用分析。
% 完整代码
Fs = 1000;
T = 1/Fs;
L = 1500;
t = (0:L-1)*T;
X = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);
figure;
plot(1000*t,X)
title('Signal')
xlabel('t (milliseconds)')
ylabel('X(t)')
Y = fft(X);
P2 = abs(Y/L);
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1);
f = Fs*(0:(L/2))/L;
figure;
plot(f,P1)
title('Single-Sided Amplitude Spectrum of X(t)')
xlabel('f (Hz)')
ylabel('|P1(f)|')
详细解释每一句的含义。
% 生成信号
Fs = 1000; %采样率1000HZ
T = 1/Fs; %采样周期即采样间隔
L = 1500; %采样总点数
t = (0:L-1)*T; %时间向量,对应着每个采样点的时间值
X = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t); %模拟采样回来的信号
figure; %新建图层
plot(1000*t,X) %画图
title('Signal') %更改图标题
xlabel('t (milliseconds)') %更改x坐标轴名称
ylabel('X(t)') %更改y坐标轴名称
原始信号图,频率50Hz与120Hz混合的信号图。
% FFT代码
Y = fft(X); %fft是快速傅里叶变换函数
P2 = abs(Y/L);
%abs函数计算Y的绝对值,得到频谱的幅度。因为FFT的结果是复数,取绝对值可以得到幅度。
P1 = P2(1:L/2+1); %FFT结果是对称的,通常只关心正频率部分,取一半
P1(2:end-1) = 2*P1(2:end-1);
%这里2:end-1,为什么没有处理索引1和索引end,是因为,索引1是直流分量,
%在P2 = abs(Y/L)已经处理过了。索引end是奈奎斯特频率,位于频谱的中间,
%并没有重复或对称,所以不需要乘2。
f = Fs*(0:(L/2))/L; %频率向量,表示每个元素对应的频率
figure;
plot(f,P1)
title('Single-Sided Amplitude Spectrum of X(t)')
xlabel('f (Hz)')
ylabel('|P1(f)|') %绝对值为幅值
从图中可以清晰看出两个频率50Hz与120Hz,并且50Hz的幅值对应0.7,120Hz的幅值对应1。
热门推荐
如何设置手机高清语音通话?VoLTE功能详解来了!
叛逆期的孩子抽烟怎么去引导
猩红热早期的症状及治疗方法
解决老人“洗澡难” 开启养老服务新模式
龙珠 | 十大激战瞬间:谁是你心中的巅峰对决?
to签是什么意思
职场遇到各种微妙的场景,一个恰当的回应可能就会成职场的助推器
面试挫折背后的反思:如何从经验中提炼出当下的竞争力
户外教育的魅力:激发好奇心与探索欲,培养全方位能力
DDoS和CC攻击有什么区别,如何有效防御?
从龋齿到龋洞:如何及时发现并采取有效治疗措施
《辅行诀脏腑用药法要讲记》第四讲: “汤液经法图”让真正的中医精准组方成为可能
系统性硬化症的症状及注意事项
丢失2FA设备该如何恢复账户访问
儿童青少年心理健康——拒绝校园霸凌
吃了20年火龙果,才知道它的皮还有这种好处,果肉吃完皮别扔
培根到底是不是“真肉”?对身体有害吗?
如何起诉房租合同违约?这份指南请收好
厨房置物架如何选?7点建议多看看!
行测考试常识判断技巧:如何利用关键词法快速解题?
焦虑症和精神病有什么区别
乌鲁木齐户口迁入条件全解析
艾滋病患者用药能活多久?科学管理与希望之光
姜维一计害三贤:三国时期最经典的离间计
一个口诀搞定蛙泳,原来有些人的蛙泳都学错了
什么是法院传票?如何辨别真伪?收到传票该怎么做?一文说清
这才是130斤阿姨该有的打扮:衣不紧身、色不过三,老了也优雅
台湾特产黑蒜头:5大营养价值,单吃超美味,料理炖汤更加分!
剑齿虎:特征、捕猎及其灭绝原因
如何在后端开发中提高代码可读性