solve Error using mvnrnd "SIGMA must be a symmetric positive semi-definite matrix" in line :"wn = mvnrnd(mN,SN)"
    3 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
%apply Bayesian Linear Regression to reach 3.8 & 3.9 pics of...
%bishop book on data which X is input and T is target...
%vector(gold standard, desire output) with number N2.
%% Initialization
clear 
close all
clc
N = 100;				% training length----100-OK
M = 10;				% model order limit-ok-0.1*100  %M is total number of parameters wj-OK
alpha 	= 2;          %p.154-OK
beta	= 25;         %p.154-OK
lambda  = alpha/beta;		%p.153-OK -regularization factor
sgm = .1;			% Gaussian kernel parameter-OK
%%  a data set, a sine function data 
load('DataSet.mat');x=X;
uj 	= linspace(0,1,M)'; 				% M in number of basis function[10*1]
y   =T;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 9 Gaussian basis functions%%%%%%%%%%%%%%%%%
X = repmat(x,1,length(uj));%[100*10]
U 		= repmat(uj',length(x),1);%[100*10]=[length(x),length(uj)]
Phi_x	= exp(-(X-U).^2/((2*sgm).^2));	% (3.4)-basis function corresponding to x
wn 	  	= normalRegEqn(Phi_x,y,lambda);	% (3.28)-p.145-basis coefficients-weghts
%%
a = (randperm(numel(x),25))';  % select random--> a = randi([1  100], 25 , 1);
x1=x(a);    % matrix randomly
y1=y(a);
X 		= repmat(x1,1,length(uj));%[25*10]
U 		= repmat(uj',25,1);%[25*10]
phi_xs	= exp((-(X-U).^2)/((2*sgm).^2));		%[25*10]% basis corresponding to x
SN 	   	= inv(alpha*eye(M)+beta*(phi_xs)'*phi_xs);%[10*10]
mN	   	= beta*SN*phi_xs'*y1;%[10*1]
W = [];
for lp = 1:100;
% 	wn		= mvnrnd(zeros(M,1),eye(M)/alpha)';
    wn		= mvnrnd(mN,SN);%%%%??????????????????????????????????????????????????????????????????????????????????????????????
	W 		= [W wn];
end
plotY(x, Phi_x, W, uj, sgm);
plot(x1,y1,'bo','LineWidth',3,'MarkerSize',16);
%%
0 Kommentare
Antworten (0)
Siehe auch
Kategorien
				Mehr zu Mathematics and Optimization finden Sie in Help Center und File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
