# パターン認識課題(ソースコード) ### オプション課題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)