📄 mog2.m
字号:
% code to make dataset for 1d mog
% outputs a c header file for use with automix
fname = 'mog2.h';
mix.K = 2;
mix.w = [ .5 .5 ]; %.5 ];
mix.mu = zeros(mix.K, 2);
mix.mu(1,:) = [-3 -3];
mix.mu(2,:) = [3 3];
mix.cov = zeros(mix.K, 2, 2);
th = 0;
v = [cos(th) sin(th) ; -sin(th) cos(th)];
d = diag([4 .1]);
mix.cov(1,:,:) = v*d*v';
th = 0;
v = [cos(th) sin(th) ; -sin(th) cos(th)];
d = diag([.2 5]);
mix.cov(2,:,:) = v*d*v';
% draw samples
nSamples = 50;
samples = zeros(nSamples, 2);
k = sample_discrete( mix.w, nSamples, 1 );
for si=1:nSamples
samples(si,:) = mvnrnd(mix.mu(k(si),:),squeeze(mix.cov(k(si),:,:)));
end
load('faithful');
nSamples = size(data,1);
samples = data;
originalSamples = samples;
S = diag(std(samples).^2);
yhat = mean(samples);
samples = (S^(-1/2)*(samples-repmat(yhat,nSamples,1))')';
save(strrep(fname,'.h','.mat'), 'originalSamples', 'samples', 'S', 'yhat');
% plot samples
figure; clf
subplot(121);
plot(originalSamples(:,1),originalSamples(:,2),'.');
axis equal;
subplot(122);
plot(samples(:,1),samples(:,2),'.');
axis equal;
title('whitened samples');
% write to file
fp = fopen(fname, 'wt');
fprintf(fp, 'int nData = %i;\n', nSamples);
fprintf(fp, 'double data[%i][2] = {{%f,%f}', nSamples, samples(1,1), samples(1,2) );
for si=2:nSamples
fprintf(fp, ',{%f,%f}', samples(si,1), samples(si,2) );
if ~mod(si,5), fprintf(fp,'\n'); end
end
fprintf(fp, '};\n');
fclose(fp);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -