📄 mog1.m
字号:
% code to make dataset for 1d mog
% outputs a c header file for use with automix
fname = 'mog1.h';
mix.K = 2;
mix.w = [ .6 .4 ];
mix.mu = [ -1.2 1.2 ];
mix.std = [ 1 1 ];
% mix.K = 4;
% mix.w = [ .3 .2 .2 .3];
% mix.mu = [ -10 0 5 -5];
% mix.std = [ 1 .5 .2 1];
% mix.K = 1;
% mix.w = [ 1 ]; %.5 ];
% mix.mu = [ -5 ]; %5 ];
% mix.std = [ 1 ]; %1 ];
% draw samples
nSamples = 500;
samples = zeros(nSamples, 1);
k = sample_discrete( mix.w, nSamples, 1 );
for si=1:nSamples
samples(si) = randn*mix.std(k(si)) + mix.mu(k(si));
end
% plot samples
figure(1); clf;
[hn hx]=hist(samples,50);
bar(hx,hn/max(hn));
hold on;
x = -5:0.1:5;
y = zeros(size(x));
for ci=1:mix.K
y = y + exp( -(x-mix.mu(ci)).^2 / mix.std(ci)^2 )*mix.w(ci);
end
plot(x,y/max(y),'r');
y = exp( -(x-mean(samples)).^2 / std(samples)^2 );
plot(x,y/max(y),'g');
save('mog1', 'samples');
% write to file
fp = fopen(fname, 'wt');
fprintf(fp, 'int nData = %i;\n', nSamples);
fprintf(fp, 'double data[%i] = {%f', nSamples, samples(1));
for si=2:nSamples
fprintf(fp, ',%f', samples(si));
if ~mod(si,5), fprintf(fp,'\n'); end
end
fprintf(fp, '};\n');
fclose(fp);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -