Matlab 将特定轴从地物复制到新地物

Matlab 将特定轴从地物复制到新地物,matlab,histogram,figure,Matlab,Histogram,Figure,我在MATLAB中将一个图形保存为.fig文件,过了一段时间后重新打开了 是否有办法访问保存在直方图中的数据?我想通过使用hist()命令而不是imhist将其复制到新图形中(原因是matlab2tikz无法正确导出由imhist绘制的直方图) 我想当我知道直方图的句柄时,我可以访问数据,对吗 编辑: A = findall(gcf,'type','axes'); 然后检查 get(A(i)) 查看直方图绘制在哪个轴上。这是可行的,但我必须弄清楚如何检索实际数据。 但我不知何故假设我必须查看

我在MATLAB中将一个图形保存为.fig文件,过了一段时间后重新打开了

是否有办法访问保存在直方图中的数据?我想通过使用
hist()
命令而不是
imhist
将其复制到新图形中(原因是matlab2tikz无法正确导出由
imhist
绘制的直方图)

我想当我知道直方图的句柄时,我可以访问数据,对吗

编辑:

A = findall(gcf,'type','axes');
然后检查

get(A(i))
查看直方图绘制在哪个轴上。这是可行的,但我必须弄清楚如何检索实际数据。
但我不知何故假设我必须查看轴句柄的父级/子级(取决于MATLAB创建的对象层次结构)。

好的,我终于找到了答案。 如上面我的编辑中所述,您可以使用
findall
查找所有轴对象的控制柄。 使用它之后,通过查看
get(A(i))
中的
X/YLim
等条目,尝试找出哪个句柄指向哪个轴,在找到轴ID并将其(A中的
k
-th元素)存储到
idx=A(k)
之后,使用此脚本从
imhist()绘制的直方图中读取条目
->按照BIN(
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
,但我只对一个快速解决方案感兴趣:-)

我要说的是,向下挖掘层次结构,直到您可以检索补丁对象的
XData
YData
,等等-从中,您应该能够重建至少原始的垃圾箱计数和中心,除了那些落在轴之外的。是的,我通过
B=get(A(2));C=get(B.Children)
其中as
C
包含
X/YData
。MATLAB:D中有很多嵌套的东西,但它仍然有意义:-)