# パターン認識課題(ソースコード)
### オプション課題1
```matlab
clear all
load digit.mat X T
[d,n,nc]=size(X)
%dはマス番号の総数
%nは訓練用の文字データがいくつあるか
%ncは1~10
nc = 10;
S=zeros(d,d);
%%共通の分散共分散行列の計算
for c=1:nc
tmp=X(:,:,c);
mu(:,c)=mean(X(:,:,c),2);%500個のデータの平均値のベクトル
S=S+cov(X(:,:,c)')/nc;%なぜncで割っているのか?とりあえず受け入れる
end
invS = inv(S);%逆行列を求める
for ct=1:nc
for c=1:nc
muc=mu(:,c);
%size(muc)
t=T(:,:,ct);%tは2次元
p(ct,:,c)=t'*invS*muc-muc'*invS*muc/2;%確率を計算している
%t'*invS*muc-muc'*invS*muc/2->データ数分現れる→そりゃそうか,tは2次元だもの
%pは3階のテンソル
end
end
[pmax P]=max(p,[],3);
%pmaxは
for ct=1:nc
for c=1:nc
C(ct,c)=sum(P(ct,:)==c);
end
end
%誤識別率および再現率の計算
pe=zeros(10,1);
recall=zeros(10,1);
for i=1:10
pe(i)=1-C(i,i)/sum(C(i,:));
recall(i)=C(i,i)/sum(C(i,:));
end
precision=zeros(10,1);
for i=1:10
precision(i)=C(i,i)/sum(C(:,i));
% sum(C(:,i))
end
Fvalue=2./(1./recall+1./precision)