% 如果是周期信号并且知道主频率f就好办
x = load('data.wav'); %假如导入录音到x
figure(1);
plot(x); % 先画图看看,数数几个周期 譬如L个
n = length(x); %信号长度
%那么采样率fs
fs = n*f/L;
如果只是一段录音信号,不知道其他信息,无法判断采样率
再问: 你好 我已经把采样频率 弄出来了 现在不知道怎么画频谱图 不知道怎么建立时间矩阵 您可以告诉我一下么
再答: % 频谱图好画,做FFT就行了 y = fft(x); N = length(x); yabs = abs(y(1:N/2))*2/N; figure(2); stem(yabs); % 如果想横轴以频率计,可以修改下 你这个时间矩阵是什么意思,没明白
再问: 不好意思 我想再问一下你给我说的这一步一步的大概是什么意思?
再答: y = fft(x); %对信号做FFT N = length(x); % 取信号长度 yabs = abs(y(1:N/2))*2/N; % 取FFT之后的各频率分量上的幅值,需要 *2/N 进行修正 figure(2); stem(yabs); % 频谱图
再问: fx=fft(x); figure(1); subplot(211); plot(x); subplot(212) plot(abs(fx)); 这个是我刚刚百度出来的一个绘制频谱图的过程 接过出来了两个图 第一个是不是就是频谱图 呢第二个图 是什么呢 还有 为什么你给我的那个程序还有我问你的这个都是画频谱图的 可是画出来的不一样呢
再答: fx=fft(x); figure(1); subplot(211); plot(x); % 第一个图 是原始信号图 subplot(212) plot(abs(fx)); % 第二个是频谱图,不过没有*2/N ,幅值不是真实的,如果你自己仿真一个信号的话,就会发现 这个图的幅值不是你仿真的真实幅值,*2/N 之后才是
再问: 我看有的人是这样写FFT的变换的 我想问一下呢个1024 是什么概念? y1=fft(x1,1024); %对信号做1024点FFT变换 你放不方便把你的QQ给我说一下?我在这不停地问你实在不方便
再答: y1=fft(x1,1024);% FFT函数fft(x,N);可以有两个参数,第二个参数是运算点数,默认是信号x的长度,可以自己设定,大于x长度的话会自动在末尾补零 QQ 532121496 设定2的整数次幂可以加快FFT运算,补零可以增大频谱的分辨率,但不能加太多0,毕竟0没有包含信号的实际信息
再问: 我加不了你 你给加我吧 271521331
再答: 记得采纳,谢谢