---
# System prepended metadata

title: パターン認識課題(ソースコード)

---

# パターン認識課題(ソースコード)
### オプション課題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は２次元だもの   
        %pは３階のテンソル
    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)