私は現在、分類中の腫瘍信号に対するサンプリング レートと量子化の影響を調べています。「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);