获取绘图的只读属性名称列表

时间:2012-12-10 13:25:08

标签: matlab

如果要通过属性结构复制绘图,则需要过滤掉只读属性(例如Annotation,BeingDeleted,Parent,Type)。有没有办法获取对象的只读属性列表?

问题来自相关问题

How can I plot from a plot handler?

2 个答案:

答案 0 :(得分:6)

我开始讨论上一个问题,试图动态找出哪些字段可以设置。

我没有完全开始工作,但我可以通过使用set(h)get(h)的返回值之间的差异来掌握(大部分)只读属性。

此处未显示的唯一属性是Parent - 属性,该属性是可设置的,但在上一个问题中不应更改。

以下是我获得不可设置属性的方法:

h = plot(1:0.2:10);
xx=get(h)

close all
h2 = plot(0);
settableHandles = set(h2);
settableNames = fieldnames(settableHandles);
allHandles = get(h2);
allNames = fieldnames(allHandles);

nonSettableHandles = rmfield(allHandles,settableNames);
nonSettableNames = fieldnames(nonSettableHandles)

这会产生nonSettableNames

的单元格
nonSettableNames = 

    'Annotation'
    'BeingDeleted'
    'Type'

答案 1 :(得分:2)

为什么不使用像

这样的东西
try
    %// [set property]

catch ME
    if ~isempty( regexp(ME.error, 'read only') )
        continue;

    else
        %// [handle other error]

    end

end