电流监测是设备健康诊断的常用手段。上周帮同事调试电机时,发现异常振动——这时候频谱分析就能派上用场了。先来段基础电流分析的代码

张开发
2026/4/13 15:02:57 15 分钟阅读

分享文章

电流监测是设备健康诊断的常用手段。上周帮同事调试电机时,发现异常振动——这时候频谱分析就能派上用场了。先来段基础电流分析的代码
电流频谱图MATLAB代码 力频谱图 三维频谱图t 0:0.001:1; % 1秒时长采样率1kHz current 5*sin(2*pi*50*t) randn(size(t))*0.3; % 50Hz工频加噪声 fs 1000; N length(current); f (-N/2:N/2-1)*(fs/N); % 频谱计算 Y fft(current); P abs(Y/N).^2; P_shift fftshift(P); figure plot(f,10*log10(P_shift)) xlabel(频率 (Hz));ylabel(功率谱密度 (dB/Hz)) title(电流信号频谱) grid on axis([-100 100 -inf inf])这段代码的核心在于如何处理FFT后的数据。注意我们做了三个关键操作归一化幅值除以N、计算功率谱平方运算以及用fftshift把负频率部分移到左边。坐标轴设置时特意限制在±100Hz范围毕竟工频谐波通常集中在这个区间。当遇到机械系统分析时力信号的频谱更关注低频成分。下面这段代码生成振动锤击信号的频谱% 力信号生成 t 0:1/2000:2; % 2秒2kHz采样 impulse zeros(size(t)); impulse(500:520) hann(21); % 汉宁窗平滑的冲击 force impulse 0.1*sin(2*pi*8*t); % 叠加8Hz低频振动 % STFT时频分析 figure spectrogram(force, 256, 250, [], 2000, yaxis) title(力信号三维频谱)这里改用spectrogram函数实现时频分析。参数设置需要注意256点窗长对应约0.128秒时间分辨率250点重叠确保图像平滑。颜色映射直观显示8Hz振动成分持续存在而冲击信号在0.25秒处出现短暂高频分量。电流频谱图MATLAB代码 力频谱图 三维频谱图对于更复杂的信号可以尝试三维可视化。修改spectrogram的输出参数[s,f,t] spectrogram(force, 256, 250, [], 2000); figure mesh(t,f,abs(s)) view(45,30) xlabel(时间 (s));ylabel(频率 (Hz));zlabel(幅值) title(三维频谱瀑布图) colormap jet这种呈现方式特别适合展示频率成分随时间变化的过程。注意mesh图默认使用线性坐标若要观察微弱信号可以改用对数坐标将z轴数据改为20*log10(abs(s))。但需注意避免对零值取对数导致的计算错误。实际应用中采样率选择至关重要。曾有个项目因采样率不足导致频率混叠——明明200Hz的振动在频谱上显示为50Hz差点误判为电源干扰。后来加上抗混叠滤波器才解决问题。这也提醒我们任何频谱分析的前提都是正确的信号采集。

更多文章