误差矩阵维度必须同意设计yulewalk过滤器

1视图(30天)
你好,
我设计一个yulewalk过滤器过滤掉噪音从输入声音和检测所需的信号。是名为designfilter的附加功能的代码,我使用我的代码。它使用的大小值平均噪声频率响应来设计滤波器。但我有错误在代码行
M =[拼(点)(points2)“拼”);
“矩阵维度必须同意”
谁能帮帮我,我做错了吗
像wav格式的音频文件。
designfilter函数代码
函数(Hz、过滤)= designfilter (finalnoise、频率、fs);
N = 10;
const = f / 2;
%功率谱密度
nfft = 2 ^ nextpow2(长度(finalnoise));
pfs = abs (fft (finalnoise nfft)) ^ 2 /长度/ fs (finalnoise);
HpsdIS = dspdata.psd (pfs(1:长度(pfs) / 2), Fs, Fs);
% yulewalk过滤器
data = 10 * log10 (HpsdIS.data);
点=圆(linspace (1230230));
points2 =圆(linspace(231512年,50));
F =[(频率(点)* 1000)/常量(频率(points2) * 1000) / const];
M =[拼(点)(points2)“拼”);
过滤器=结构(F, F,“M”,米);
赫兹= yulewalk (N、F M);
结束
这是我的代码,我用designfilter函数
(声音,fs) = audioread (“noise.wav”);
[哀号,fs] = audioread (“ambulancewail.wav”);
bufferpos = 0;
buffersize = 5;
窗口= 1024;
循环=圆(长度(声音)/窗口)1;
% %噪音缓冲
声音noisebuffer(: 1) =((1:窗口),1);
为n = 2: buffersize
noisebuffer(:,大小(noisebuffer, 2) + 1) =声音((((n - 1) *窗口)+ 1:n *窗口),1);
结束
finalnoise = (noisebuffer, 2)。/ buffersize总和;
% %
N =长度(finalnoise);
xdft = fft (finalnoise);
xdft = xdft (1: N / 2 + 1);
psdx = (1 / (fs * N)) * abs (xdft)。^ 2;
psdx (2: end-1) = 2 * psdx (2: end-1);
频率= 0:fs /长度(finalnoise): fs / 2;
情节(频率、10 * log10 (psdx))
网格
标题(“使用FFT周期图”)
包含(频率(赫兹))
ylabel(功率/频率(dB / Hz)”)
% %滤波器设计
[Hz、过滤器(1).filter] = designfilter (finalnoise、频率、fs);

答案(0)

下载188bet金宝搏

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!