% 读取音频文件filename = 'example.aac';[x,fs] = audioread(filename);% 基频提取[pitch,~,~] = pitch(x,fs);% 共振峰提取order = 12; % LPC阶数[~,lpcResidual,a] = lpcauto(x,order);[~,f] = rceps(lpcResidual); % 反离散余弦变换f = f(1:end-1); % 去掉第一个点,因为它是无限远处的值% 绘制基频和共振峰图像t = (0:length(x)-1)/fs;figure;subplot(2,1,1);plot(t,pitch);xlabel('Time (s)');ylabel('Pitch (Hz)');title('Pitch Contour');subplot(2,1,2);plot(fs*(0:length(f)-1)/length(f),f);xlabel('Frequency (Hz)');ylabel('Magnitude (dB)');title('Resonant Frequencies');出错 untitled2 (第 4 行) [pitch,~,~] = pitch(x,fs); untitled2 调用 "varargout" 时,未对一个或多个输出参数赋值。 出错 untitled2 (第 4 行) [pitch,~,~] = pitch(x,fs);请修改这些错误
时间: 2023-07-16 11:11:33 浏览: 87
audioread - 统一的音频文件输入功能:audioread 提供了一个单一的、统一的功能,用于读取 wav、mp3、aac、flac...-matlab开发
这段代码中出错的原因是pitch函数的输出参数没有被正确地赋值。pitch函数的输出参数有三个,分别是基频、每一帧的自相关函数以及每一帧的自相关函数峰值。因此,应该修改为以下代码:
```
[pitch,~,~] = pitch(x,fs,'WindowLength',round(0.03*fs),'OverlapLength',round(0.02*fs));
```
其中,'WindowLength'和'OverlapLength'是pitch函数的参数,用于控制分帧的窗口长度和重叠长度。这里使用了默认值,即窗口长度为30ms,重叠长度为20ms。
阅读全文