微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MATLAB、fitcknn 使用 Mel 频率倒谱系数 (MFCC)

如何解决MATLAB、fitcknn 使用 Mel 频率倒谱系数 (MFCC)

我正在使用我的教授提供的函数来使用 kNN 算法进行分类,以获得对不同邻居的最高识别率,但出现以下错误

Error using classreg.learning.FullClassificationRegressionModel.prepareDataCR (line 234)
X and Y do not have the same number of observations.
Error in classreg.learning.classif.FullClassificationModel.prepareData (line 821)
                classreg.learning.FullClassificationRegressionModel.prepareDataCR(...
Error in ClassificationKNN.prepareData (line 926)
                prepareData@classreg.learning.classif.FullClassificationModel(X,Y,varargin{:},'OrdinalIsCategorical',true);
Error in classreg.learning.FitTemplate/fit (line 233)
                    this.PrepareData(X,this.BaseFitObjectArgs{:});
Error in ClassificationKNN.fit (line 911)
            this = fit(temp,X,Y);
Error in fitcknn (line 264)
    this = ClassificationKNN.fit(X,RemainingArgs{:});
Error in kNN_algorithm_features (line 13)
    Mdl = fitcknn(trainSet',trainLabel','NumNeighbors',k(kk));

使用他提供的音频数据,我可以使用它,但是当我尝试使用我自己的音频时,它给了我那个错误。 我们对音频的每次特征(频谱质心、传播、滚降和 MFCC)都这样做,但此错误仅在 MFCC 中出现。

% function [a,b]=kNN_algorithm_features(trainSet,testSet,trainLabel,testLabel)

load('matlab.mat');
trainSet = MFCC_trainSet;
testSet = MFCC_testSet;
trainLabel = MFCC_trainSet_label;
testLabel = MFCC_testSet_label;

rate=[];
k=[1 5 10 15 20];
for kk=1:length(k)
    disp(['set-up the kNN... number of neighbors: ',mat2str(k(kk))])
    Mdl = fitcknn(trainSet',k(kk));
    
    % test the kNN
    predicted_label = predict(Mdl,testSet');
    
    % measure the performance
    correct = 0;
    flag = zeros(1,length(predicted_label));
    for i=1:length(predicted_label)
        if length(testLabel) >= i
            if predicted_label(i)==testLabel(i)
                correct=correct+1;
                flag(i) = 1;
            end
        end
    end
    disp('recognition rate:')
    rate(kk) = (correct/length(predicted_label))*100
end

[a,b]=max(rate);

对于 .mat 文件,我无法附加它,但我将粘贴在这里

MFCC_testSet 13x216712 double
MFCC_testSet_label 1x216712 double
MFCC_trainSet 13x219236 double
MFCC_trainSet_label 1x216972 double
  • MFCC_trainSet_label 和 MFCC_testSet_label 只是 1 的序列,用于比较它们
  • MFCC_trainSet 包含所有歌曲的 MFCC 值
  • MFCC_testSet 包含测试歌曲的 MFCC 值

我做错了什么?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。