📄 利用mfcc提取参数.txt
字号:
clear
clc
num=2;
disp('正在计算参考模板的参数...')
for i=1:num
fname = sprintf('%s%i','D:\MATLAB6p5\work\work\噪声故障判断\data\train3\s',i);%suanfa\dtw\
x = wavread(fname);
[x1 x2] = vad(x);
m = mfcc(x);
m = m(x1-2:x2-2,:);
ref(i).mfcc = m;
end
disp('正在计算测试模板的参数...')
for i=1:num
fname = sprintf('%s%i','D:\MATLAB6p5\work\work\噪声故障判断\data\train4\s',i);%suanfa\dtw\
x = wavread(fname);
[x1 x2] = vad(x);
m = mfcc(x);
m = m(x1-2:x2-2,:);
test(i).mfcc = m;
end
disp('正在进行模板匹配...')
dist = zeros;
for i=1:num
for j=1:num
dist(i,j) = dtw2(test(i).mfcc, ref(j).mfcc);
end
end
disp('正在计算匹配结果...')
for i=1:num
[d,j] = min(dist(i,:));
fprintf('测试模板 %d 的识别结果为:%d\n', i, j);
end
实验结果显示:::
正在计算参考模板的参数...
正在计算测试模板的参数...
正在进行模板匹配...
正在计算匹配结果...
测试模板 1 的识别结果为:1
测试模板 2 的识别结果为:2
对电机声音进行识别
clear
clc
num=6;
disp('正在计算参考模板的参数...')
for i=1:num
fname = sprintf('%s%i','D:\MATLAB6p5\work\work\实验\ref\s',i);%suanfa\dtw\
x = wavread(fname);
[x1 x2] = vad(x);
m = mfcc(x);
%m = m(x1-2:x2-2,:);
ref(i).mfcc = m;
end
disp('正在计算测试模板的参数...')
for i=1:num
fname = sprintf('%s%i','D:\MATLAB6p5\work\work\实验\test\s',i);%suanfa\dtw\
x = wavread(fname);
[x1 x2] = vad(x);
m = mfcc(x);
%m = m(x1-2:x2-2,:);
test(i).mfcc = m;
end
disp('正在进行模板匹配...')
dist = zeros;
for i=1:num
for j=1:num
dist(i,j) = dtw2(test(i).mfcc, ref(j).mfcc);
end
end
disp('正在计算匹配结果...')
for i=1:num
[d,j] = min(dist(i,:));
fprintf('测试模板 %d 的识别结果为:%d\n', i, j);
end
在实验过程中使用了6个声音信号测试结果
正在计算参考模板的参数...
正在计算测试模板的参数...
正在进行模板匹配...
正在计算匹配结果...
测试模板 1 的识别结果为:1
测试模板 2 的识别结果为:2
测试模板 3 的识别结果为:3
测试模板 4 的识别结果为:4
测试模板 5 的识别结果为:5
测试模板 6 的识别结果为:6
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -