6

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

这个问题来自一个相关的问题

如何从绘图处理程序中绘图?

4

2 回答 2

6

我开始琢磨上一个问题,试图动态找出哪些字段是可设置的。

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

唯一没有出现在这里的属性是Parent-property,它是可设置的,但不应该在上一个问题中更改。

这是我获得不可设置属性的方式:

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'
于 2012-12-10T15:24:51.377 回答
2

为什么不使用类似的东西

try
    %// [set property]

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

    else
        %// [handle other error]

    end

end 
于 2012-12-10T13:37:48.677 回答