⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mixgauss_prob_test.m

📁 非常好的MATLAB-KALMAN工具包
💻 M
字号:
function test_eval_pdf_cond_mixgauss()%Q = 10; M = 100; d = 20; T = 500;Q = 2; M = 3; d = 4; T = 5;mu = rand(d,Q,M);data = randn(d,T);%mixmat = mk_stochastic(rand(Q,M));mixmat = mk_stochastic(ones(Q,M));% tied scalarSigma = 0.01;mu = rand(d,M,Q);weights = mixmat';N = M*ones(1,Q);tic; [B, B2, D] = parzen(data, mu, Sigma, N, weights); toctic; [BC, B2C, DC] = parzenC(data, mu, Sigma, N); tocapproxeq(B,BC)B2C = reshape(B2C,[M Q T]);approxeq(B2,B2C)DC = reshape(DC,[M Q T]);approxeq(D,DC)returntic; [B, B2] = eval_pdf_cond_mixgauss(data, mu, Sigma, mixmat); toctic; C = eval_pdf_cond_parzen(data, mu, Sigma); tocapproxeq(B,C)return;mu = reshape(mu, [d Q*M]);data = mk_unit_norm(data);mu = mk_unit_norm(mu);tic; D = 2 -2*(data'*mu); toc % avoid an expensive repmattic; D2 = sqdist(data, mu); tocapproxeq(D,D2)% D(t,m) = sq dist between data(:,t) and mu(:,m)mu = reshape(mu, [d Q*M]);D = dist2(data', mu');%denom = (2*pi)^(d/2)*sqrt(abs(det(C)));denom = (2*pi*Sigma)^(d/2); % sqrt(det(2*pi*Sigma))numer = exp(-0.5/Sigma  * D');B2 = numer / denom;B2 = reshape(B2, [Q M T]);tic; B = squeeze(sum(B2 .* repmat(mixmat, [1 1 T]), 2)); tocticA = zeros(Q,T);for q=1:Q  A(q,:) = mixmat(q,:) * squeeze(B2(q,:,:)); % sum over mendtocassert(approxeq(A,B))ticA = zeros(Q,T);for t=1:T  A(:,t) = sum(mixmat .* B2(:,:,t), 2); % sum over mendtocassert(approxeq(A,B))    mu = reshape(mu, [d Q M]);B3 = zeros(Q,M,T);for j=1:Q  for k=1:M    B3(j,k,:) = gaussian_prob(data, mu(:,j,k), Sigma*eye(d));  endendassert(approxeq(B2, B3))logB4 = -(d/2)*log(2*pi*Sigma) - (1/(2*Sigma))*D; % det(sigma*I) = sigma^dB4 = reshape(exp(logB4), [Q M T]);assert(approxeq(B4, B3))  % tied cov matrixSigma = rand_psd(d,d);mu = reshape(mu, [d Q*M]);D = sqdist(data, mu, inv(Sigma))';denom = sqrt(det(2*pi*Sigma));numer = exp(-0.5 * D);B2 = numer / denom;B2 = reshape(B2, [Q M T]);mu = reshape(mu, [d Q M]);B3 = zeros(Q,M,T);for j=1:Q  for k=1:M    B3(j,k,:) = gaussian_prob(data, mu(:,j,k), Sigma);  endendassert(approxeq(B2, B3))logB4 = -(d/2)*log(2*pi) - 0.5*logdet(Sigma) - 0.5*D;B4 = reshape(exp(logB4), [Q M T]);assert(approxeq(B4, B3))

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -