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 に答える