%频谱分析 clear all close all y0=mscale(3,1,20000,60,'钢琴'); % 音调中音C,钢琴,1秒音乐(四分音符,速度60) ,采样率20000 [y1,Fs,nbits]=wavread('吉他音节.wav'); [y2,Fs,nbits]=wavread('钢琴音节.wav'); [y3,Fs,nbits]=wavread('小提琴音节.wav'); [y4,Fs,nbits]=wavread('萨克斯音节.wav'); x0=y0; f0=fft(x0); n1=Fs; % 取1秒数据 x1=y1(1:n1);f1=fft(x1); x2=y2(1:n1);f2=fft(x2); x3=y3(1:n1);f3=fft(x3); x4=y4(1:n1);f4=fft(x4); figure(1); subplot(1,4,1);plot(x1);title('吉他单音节波形(1sec)'); subplot(1,4,2);plot(x2);title('钢琴单音节波形(1sec)'); subplot(1,4,3);plot(x3);title('小提琴单音节波 形(1sec)'); subplot(1,4,4);plot(x4);title('萨克斯单音节波 形(1sec)'); figure(2); subplot(4,1,1);plot(abs(f1)); title('低音C-吉他单音节频谱(采样率44100)'); subplot(4,1,2);plot(abs(f2)); title('低音C-钢琴单音节频谱(采样率44100)'); subplot(4,1,3);plot(abs(f3)); title('中音C-小提琴单音节频谱(采样率44100)'); subplot(4,1,4);plot(abs(f4)); title('低音C-萨克斯单音节频谱(采样率44100)'); n2=1000; figure(3); subplot(4,1,1);plot(abs(f1(1:n2))); title('低音C-吉他单音节频谱(0-1000Hz)'); subplot(4,1,2);plot(abs(f2(1:n2))); title('低音C-钢琴单音节频谱(0-1000Hz)'); subplot(4,1,3);plot(abs(f3(1:n2))); title('中音C-小提琴单音节频谱(0-1000Hz)'); subplot(4,1,4);plot(abs(f0(1:n2))); title('中音C-自制钢琴单音节频谱(0-1000Hz)'); figure(4); subplot(3,1,1);plot(y4(1:n1*2)); title('萨克斯单音节波形(2sec)'); subplot(3,1,2);plot(y2(1:n1*2)); title('钢琴单音节波形(2sec)'); subplot(3,1,3);plot(y0); title('自制钢琴单音节波形(1sec)');
时间: 2023-08-23 08:05:01 浏览: 175
这是一段 MATLAB 代码,用于对不同乐器的音频进行频谱分析和波形展示。首先通过 mscale 函数生成一个持续一秒钟的中音 C 钢琴音。接着使用 wavread 函数读取四个不同乐器的音频数据,并使用 fft 函数对其进行频谱分析。代码中还包括了一些图形显示的操作,其中:
- figure(1):展示四个乐器的波形图,分别以 subplots 的形式展示;
- figure(2):展示四个乐器的频谱图,分别以 subplots 的形式展示;
- figure(3):在 figure(2) 的基础上,展示频率在 0-1000Hz 范围内的频谱图;
- figure(4):展示三个乐器的波形图,分别以 subplots 的形式展示。
这段代码可用于音频信号处理和乐器音色分析等领域。
阅读全文