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