Matlab数据 - 从高斯分布中删除填充

时间:2014-12-07 11:57:50

标签: matlab data-fitting

我正在模拟NAND Flash mlc,我使用hist()来显示4个高斯分布的结果。

问题在于我试图同时显示8个分布,并且它们重叠。所以,我想找到一种方法去除高斯分布内的填充,只保留轮廓。有没有办法做到这一点?我发现可能"基本拟合" Matlab中的选项可以做到这一点,但它是"灰色"我不能在这个数字上选择它。

-

我尝试添加一张简单的图片,可以解释一切,但由于我的声誉,我无法解释。

我在FPGA(ZedBoard)工作以创建仿真,但这与我提出的问题无关。

所以,我从ZedBoard得到一个带有单精度值的输入文件,然后我在Matlab中插入并得到我正在谈论的数字。 我不认为我在Matlab中的代码可以以任何方式提供帮助,这就是我没有提出的原因。

虽然,我应该提到八个发行版具有几乎完全相同的特征,因此它们几乎出现在同一个地方。这就是为什么我正在寻找一种正确显示它们的方法。 这些" hists"下面必须出现在同一个数字上而不相互重叠。通常,当Matlab用" hist"显示高斯分布时使用我要删除的蓝色填充,如果可能,只留下分布的概述。我希望我已经更好地了解了我的问题。

fid1 = fopen('soft_without.txt');   
A = textscan(fid1,'%s');
B = char(A{1});
fclose (fid1);
output = typecast(uint32(hex2dec(B)),'single');
hist(output,1000);

fid2 = fopen('soft_with.txt');   
A = textscan(fid2,'%s');
B = char(A{1});
fclose (fid2);
output1 = typecast(uint32(hex2dec(B)),'single');
hist(output1,1000);

1 个答案:

答案 0 :(得分:0)

让我们首先将所有数据放入一个数据集中,而不是拥有一堆不同的变量:

filenames = ls('*.txt');  % or whatever you do to make up your list of files
data = zeros(1000, 8);  %preallocate

% going to use first file to set location of bins so they're all the same
fid = fopen(filenames(1,:))
A = textscan(fid,'%s');  
B = char(A{1});
fclose(fid);
output = typecast(uint32(hex2dec(B)),'single');
[x, bins] = hist(output,1000);
data(:,1) = x;

% set rest to same bins

for n = 2:8
    fid = fopen(filenames(n,:))
    A = textscan(fid,'%s');  
    B = char(A{1});
    fclose(fid);
    output = typecast(uint32(hex2dec(B)),'single');
    x = hist(output,bins);
    data(:,n) = x;
end

bar(bins,data);

这会将您的八组绘制为八个不同(并排)条形图。另一种方法是绘制彼此的顶部,但设置不同的边缘颜色和没有面部颜色(可能还尝试改变宽度)。

colors = jet(8); % eight colors from the jet colormap
figure; hold on;
for n = 1:8
    bar(bins,data(:,n),'facecolor','none','edgecolor', colors(n,:));
end