当前位置: 首页 > news >正文

Matlab 通用库的fft和dsp toolbox的dsp.fft对比

Matlab dsp toolbox 有一个dsp.fft系统对像。Matlab通用函数也有一个FFT。下面是一个代码分别使用这两种方法计算频谱,从图中可以看出结果差别不大。

点击查看代码
%% FFT计算对比 - dsp.FFT vs MATLAB fft
clear; clc; close all;%% 参数设置
Fs = 1000;           % 采样频率 1kHz
f0 = 50;             % 信号频率 50Hz
A = 1;               % 信号幅度
N = 256;             % FFT点数
t = (0:N-1) / Fs;    % 时间向量fprintf('信号: %.1fHz正弦波, 采样率%.1fHz, FFT点数%d\n', f0, Fs, N);%% 生成sin信号
signal = A * sin(2*pi*f0*t);%% 使用dsp.FFT计算
fft_dsp = dsp.FFT();
fft_dsp.FFTLength = N;
fft_output_dsp = fft_dsp(signal');
fft_output_dsp_float = double(fft_output_dsp);
mag_dsp = abs(fft_output_dsp_float(1:N/2)) / (N/2);%% 使用MATLAB fft计算
fft_matlab = fft(signal);
mag_matlab = abs(fft_matlab(1:N/2)) / (N/2);%% 频率轴
freq_axis = (0:N/2-1) * Fs / N;%% 性能分析
[peak_matlab, idx_matlab] = max(mag_matlab);
freq_matlab = freq_axis(idx_matlab);
[peak_dsp, idx_dsp] = max(mag_dsp);
freq_dsp = freq_axis(idx_dsp);error_val = abs(mag_matlab - mag_dsp);
max_error = max(error_val);
rms_error = rms(error_val);fprintf('\n性能对比:\n');
fprintf('MATLAB fft: 峰值 %.4f @ %.1fHz\n', peak_matlab, freq_matlab);
fprintf('dsp.FFT:   峰值 %.4f @ %.1fHz\n', peak_dsp, freq_dsp);
fprintf('最大误差: %.6f, RMS误差: %.6f\n', max_error, rms_error);%% 绘制图形
figure('Position', [100, 100, 1400, 600]);% 子图1: 时域信号
subplot(1,3,1);
plot(t, signal, 'b-', 'LineWidth', 1.5);
xlabel('时间 (s)');
ylabel('幅度');
title('时域信号');
grid on;% 子图2: MATLAB fft频谱
subplot(1,3,2);
stem(freq_axis, mag_matlab, 'b.', 'MarkerSize', 10, 'LineWidth', 1);
xlabel('频率 (Hz)');
ylabel('幅度');
title('MATLAB fft频谱');
xlim([0, 200]); ylim([0, 1.2]);
grid on;
hold on;
plot(freq_matlab, peak_matlab, 'ro', 'MarkerSize', 10, 'LineWidth', 2);
text(freq_matlab, peak_matlab+0.15, sprintf('峰值: %.4f\n频率: %.1fHz', peak_matlab, freq_matlab), ...'HorizontalAlignment', 'center', 'FontWeight', 'bold', 'FontSize', 9);% 子图3: dsp.FFT频谱
subplot(1,3,3);
stem(freq_axis, mag_dsp, 'r.', 'MarkerSize', 10, 'LineWidth', 1);
xlabel('频率 (Hz)');
ylabel('幅度');
title('dsp.FFT频谱');
xlim([0, 200]); ylim([0, 1.2]);
grid on;
hold on;
plot(freq_dsp, peak_dsp, 'bo', 'MarkerSize', 10, 'LineWidth', 2);
text(freq_dsp, peak_dsp+0.15, sprintf('峰值: %.4f\n频率: %.1fHz', peak_dsp, freq_dsp), ...'HorizontalAlignment', 'center', 'FontWeight', 'bold', 'FontSize', 9);% 总标题
sgtitle(sprintf('FFT计算对比 (%.0fHz正弦信号, %d点FFT)', f0, N), ...'FontSize', 14, 'FontWeight', 'bold');fprintf('\n对比完成!\n');
结果如附图: ![dspfftvsfft](https://img2024.cnblogs.com/blog/3707231/202509/3707231-20250930151214984-153375364.jpg)
http://www.hskmm.com/?act=detail&tid=21516

相关文章:

  • [CTS2024] 众生之门
  • [CEOI 2025] Equal Mex
  • [ROI 2018] Quick sort
  • CF2127F Hamed and AghaBalaSar
  • 2025 年PPH 管厂家推荐榜单:江苏镇江扬中优质 PPH 管道/管材/管件厂家权威精选
  • Label-Free Liver Tumor Segmentation
  • CF1951G Clacking Balls
  • [ABC311Ex] Many Illumination Plans
  • 2025 预分散颜料厂家最新推荐榜:超高含量技术 + 合规企业全景指南,纺丝 / 吹膜专用产品选型手册
  • 倍增思想与其优化
  • 2025 年 AI 健康管理领域推荐深护智康,社区、基层公卫、母婴 AI 健康管理、AI + 大健康管理、AI 健康管理师公司推荐
  • 2025 最新权威推荐:全国开锁公司口碑排行榜,含智能锁专项服务与紧急上门品牌详解汽车保险柜开锁/汽车锁开锁/保险柜开锁/智能开锁/快速上门开锁公司推荐
  • 从“看得见”到“能决策”:Operation Intelligence 重构企业智能运维新范式
  • 实用指南:Ubuntu 中 Bash / Zsh / Ash / Dash 的使用与区别(含对比图)
  • 2025 年杭州软件开发公司最新推荐榜单:聚焦服务经验与售后体系的五大优质公司权威指南
  • Nginx 与 LNMP 架构部署 - 详解
  • QMT委托对象orderInfo的属性以及对应的值
  • 2025 年电动门厂家最新推荐排行榜:实力厂家深度解析,含技术认证、案例及选购指南
  • 2025 年透骨液膏药代理加盟 / 足浴包膏药代理加盟 / 青岛膏药代理加盟推荐:青岛步泽药业布泽草本透骨液代理合作解析
  • 单链表实现队列
  • 死锁易错知识点整理
  • 2025广州1688代运营服务商推荐排行榜,阿里巴巴全店,实力商家,店铺装修,产品推广,流量优化,国际站,新店起量,数据分析,爆款打造代运营公司推荐
  • 2025 海南财税公司最新推荐榜:三亚海口代理记账 / 税务合规服务机构权威解析海南代理财税/海南财税代理/海南注册公司财税/海南代理记账财税公司推荐
  • 2025 年 TM 芯片经销商最新推荐榜:聚焦规模化采购与敏捷物流, 实力解析
  • 2025 天微芯片经销商最新推荐榜:品牌实力测评与采购指南 —— 权威揭秘优质服务商选择标准
  • 读人形机器人27太空中
  • 2025 年酒店一次性用品源头厂家最新推荐榜单:含牙签牙线筷子套杯盖等全品类及采购选择指南酒店一次性牙签/牙线/筷子套/杯盖/杯垫/杯套用品 厂家推荐
  • 2025 年餐饮一次性用品实力厂家最新推荐榜单:覆盖牙签 / 牙线 / 筷子套 / 杯盖 / 杯垫多品类且资质口碑双优的标杆企业权威甄选
  • 校内模拟赛 路径 题解
  • 05-FreeRTOS的内存管理