Sunteți pe pagina 1din 5

%HOMEWORK 2 SUBMISSION %SWETASUDHA PANDA %I pledge my honor that I have written the code included in this report and

that I have not copied it. I further pledge that, if I have any reason to believe that the Honor Code of Vanderbilt University has %been violated, I have taken or I will take appropriate action.

clear all close all clc

prompt='enter folder location '; file_location=input(prompt,'s'); cd(sprintf('%s',file_location))

prompt='what is the name of .mat format file?'; file_name = input(prompt,'s'); load (file_name,'-mat');

P=fx; z=[1:256];

figure; subplot(2,2,1); plot([1:256],P); title('given probability density function') k=3;

prompt='enter the initial mean values'; mu = input(prompt,'s'); mu=str2num(mu); prompt='enter the initial variance values';

variances = input(prompt,'s'); variances=str2num(variances); prompt='enter the initial class probability values'; class_P = input(prompt,'s'); class_P=str2num(class_P);

updated_mu=zeros(size(mu)); updated_variances=zeros(size(variances)); updated_class_P=zeros(size(class_P));

Initial_gaussian_mixture=0; for ii=1:k Initial_gaussian_mixture=Initial_gaussian_mixture+(class_P(ii)/(sqrt(2*pi*variances(ii)))).*exp(-(z-mu(ii)).^2/(2*variances(ii))); end

subplot(2,2,2); plot([1:256],Initial_gaussian_mixture,'r'); hold on plot([1:256],P,'b'); hold off title('initialization'); previous_gaussian_mixture=0;

max_iter=100; diff=100000; num_iterations=0;

while diff>(10^(-10))

numerator=zeros(3,256);

for ii=1:k numerator(ii, :) = (class_P(ii) * exp( -(z-mu(ii)).^2 / (2*variances(ii)) ) )/ ((sqrt(variances(ii)) * sqrt(2*pi) ));

end

denominator=sum(numerator); aposteriori_probability=zeros(k,256); for ii=1:k aposteriori_probability(ii,:)=(numerator(ii,:).*P)./denominator; end for ii=1:k updated_mu(ii)=(sum((aposteriori_probability(ii,:).*z)))./(sum(aposteriori_probability(ii,:))); updated_variances(ii)=(sum(aposteriori_probability(ii,:).*(z-mu(ii)).^2) / sum(aposteriori_probability(ii,:))); updated_class_P(ii)=(sum(aposteriori_probability(ii,:))); end

mu=updated_mu; variances=updated_variances; class_P=updated_class_P;

updated_gaussian_mixture=0; for ii=1:k updated_gaussian_mixture=updated_gaussian_mixture+(class_P(ii)/(sqrt(2*pi*variances(ii)))).*exp(-(z-mu(ii)).^2/(2*variances(ii))); end

diff=sqrt(mean((updated_gaussian_mixture-previous_gaussian_mixture).^2)); previous_gaussian_mixture=updated_gaussian_mixture;

subplot(2,2,3)

h=plot(1:256,P,'b*'); set(h,'MarkerSize',2); hold on; plot(1:256,updated_gaussian_mixture,'r'); hold off; title('curve evolution') legend('truth','estimate')

drawnow; num_iterations=num_iterations+1;

end

subplot(2,2,4) plot(1:256,previous_gaussian_mixture,'r'); title('final estimation')

%display the final results display('we stop iterating when the rmse of the successive estimated curves is less than 10^(-10)') display('number of iterations') num_iterations display('final estimated values:') mu variances class_P

S-ar putea să vă placă și