我已经将一个数字保存为MATLAB中的.fig文件,我在一段时间后重新打开了。
有没有办法访问直方图中保存的数据?我想通过使用hist()
命令而不是imhist
将其重新绘制成一个新图形(原因是matlab2tikz无法正确导出由imhist
绘制的直方图)。
我想我可以在知道直方图的句柄时访问数据,对吗?
修改
A = findall(gcf,'type','axes');
然后检查
get(A(i))
查看绘制直方图的轴。这有效但我必须弄清楚如何检索实际数据。 但我不知何故假设我必须查看轴句柄的父/子(取决于MATLAB创建的对象的层次结构)。
答案 0 :(得分:0)
好吧我终于明白了。
正如我在上面的编辑中所写,您可以使用findall
来查找所有轴对象的句柄。
使用它之后,在找到轴ID并存储它(X/YLim
- th之后,通过查看get(A(i))
中k
之类的条目,尝试找出哪个句柄指向哪些轴。 A)到idx = A(K)
中的元素,使用此脚本从imhist()
- >绘制的直方图中读取条目。这些值按照箱子(YData
)的描述进行复制,然后由hist
重新绘制成新的数字:
% ----------------------------------------------------------------------- %
b = get(idx);
b = get(b.Children); % Get the Plot-Handle
x = b.XData; % Bins
y = b.YData; % Bin-Counts
data = [];
for i = 1:length(x)
data = [data x(i)*ones(1,y(i))]; % replicate data
end
figure
hist(data, length(unique(x)));
xlim([min(data) max(data)]);
编辑:for循环是一个快速而肮脏的;-)我确定有一个更好的解决方案,例如使用repmat
,但我只对快速解决方案感兴趣: - )