0

私は現在、分類中の腫瘍信号に対するサンプリング レートと量子化の影響を調べています。「TRAINING のプールされた共分散行列は正定値でなければなりません」というエラーが表示されます。量子化された信号 (8 ビット) を分類しようとした場合のみ。量子化が >8 ビットに設定されている場合、コードは完全に実行されます!

私は少し混乱しています。

私のコードは次のとおりです。

    clear all;
    close all;
    clc;

    load('AllSignalsModified.mat')

    % =================================%
    % PCA - Feature Extraction
    % =================================%
    [cl, pcaAll]= princomp(allSignals);
    bestFeatures = pcaAll(:,1:100);

    %==============================%
    % Decimate allSignals
    %==============================%

    nsamp = 100;
    fs1 = 50e9;
    N = 2;
    fs2 = fs1/N;
    x = allSignals;

    % iterate thru each tumour signal

    for i = 1:960,
        oneRow= allSignals(i,:);
        downSampleRow(i,:) = oneRow(1:N:end);
    end;

    oneSampleRow = downSampleRow(1,:);

    %==========================================%
    % Quantisation 
    %==========================================%

    nbits = 8;

    for i = 1:960,
        x = downSampleRow(i,:);
        x2 = x / max(abs(x));
        x3= x2 .* 2^(nbits-1)-1;
        quantisedSig(i,:) = round(squeeze(x3));
    end;

    % =================================%
    % LDA Classification 
    % =================================%

    typeOfTumour(typeOfTumour<=2) = 0;
    typeOfTumour(typeOfTumour>=3) = 1;

    testSetResult = classify(quantisedSig,quantisedSig,typeOfTumour,'linear');
    testSetResult1 = classify(quantisedSig,quantisedSig,typeOfTumour,'quadratic');

    count = 0;
    for i = 1:960,
        if(testSetResult(i) == typeOfTumour(i))
            count = count + 1;
        end;
    end;

    count1 = 0;
    for i = 1:960,
        if(testSetResult1(i) == typeOfTumour(i))
            count1 = count1 + 1;
        end;
    end;

    percentageCorrect = (count/960)*100;
    percentageCorrect1 = (count1/960)*100;
    display(percentageCorrect);
    display(percentageCorrect1);
4

0 に答える 0