solve Error using mvnrnd "SIGMA must be a symmetric positive semi-definite matrix" in line :"wn = mvnrnd(mN,SN)"
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
%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 commentaires
Réponses (0)
Voir également
Catégories
En savoir plus sur Mathematics and Optimization dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!