function [f,p] = fft_plot(input_pre,Fs,SAM) L = Fs*SAM;%采样点数 input_p = input_pre(1:(floor(length(input_pre)/L)*L)); P = zeros(L/2+1,floor(length(input_p)/L)); for i = 1:floor(length(input_p)/L) f = Fs*(0:(L/2))/L; input = input_p((i-1)*L+1:i*L); primary_data = input-mean(input); primary_data = reshape(primary_data,[],1); primary_data = primary_data(1:L); %数据直接进行fft处理并plot pri_fft = fft(primary_data); P2 = abs(pri_fft/L); P1 = P2(1:L/2+1); P(2:end-1,i) = 2*P1(2:end-1); end Pover = mean(P'); Pover = Pover'; plot(f,Pover); p = Pover; grid on hold on end
时间: 2024-04-23 14:23:14 浏览: 93
对一段采样信号做FFT(MATLAB程序)
这是一个 Matlab 的函数,它的功能是对输入信号进行快速傅里叶变换(FFT),并绘制其频谱图。该函数的输入参数包括:
1. input_pre:输入信号向量
2. Fs:采样率
3. SAM:采样时间(秒)
该函数的输出变量包括:
1. f:频率向量
2. p:频谱密度向量
该函数的主要实现过程是:
1. 将输入信号按照采样时间 SAM 进行分段,每一段长度为 L(采样点数)
2. 对每一段信号进行 FFT 变换,并计算其频谱密度
3. 将每一段的频谱密度取平均值,得到最终的频谱密度向量
4. 绘制频谱图
该函数可以用于分析信号的频域特性,例如声音信号的频谱分析等。如果您有任何关于该函数的问题,可以进一步提问。
阅读全文