matlab计算正弦波频率并画出频率随时间变化的图的代码
假设正弦波的公式为y = Asin(2pift),其中A为振幅,f为频率,t为时间。
要计算正弦波的频率,可以使用傅里叶变换。具体代码如下:
% 生成正弦波信号 fs = 1000; % 采样率 t = 0:1/fs:1; % 时间向量 f = 10; % 频率 A = 1; % 振幅 y = Asin(2pift); % 正弦波信号
% 计算频谱 N = length(y); % 信号长度 Y = fft(y); % 傅里叶变换 P2 = abs(Y/N); % 双边频谱 P1 = P2(1:N/2+1); % 单边频谱 P1(2:end-1) = 2P1(2:end-1); % 能量归一化 f = fs(0:(N/2))/N; % 频率向量
% 找到主频率 [maxVal, maxIdx] = max(P1); f0 = f(maxIdx);
% 画出频率随时间变化的图 plot(t, f0*ones(size(t))); % 画出频率随时间变化的曲线 xlabel('Time (s)'); ylabel('Frequency (Hz)'); % 设置坐标轴标签
注:以上代码中,傅里叶变换后得到的频谱P1表示的是信号中各个频率成分的能量大小,找到其中能量最大的频率对应的就是信号的主频率
原文地址: http://www.cveoy.top/t/topic/dgDr 著作权归作者所有。请勿转载和采集!