我正在模拟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);
答案 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