Matlab 如何从打印处理程序打印?

Matlab 如何从打印处理程序打印?,matlab,Matlab,我有绘图的处理程序,或图形的处理程序 例如: 此处理程序包含所有打印信息,如何再次打印?这是一个关于绘图的简单示例,但它应该也适用于切片。我不知道是否有更简单的方法,但在扩展数据和YData中有x,y值。 做: 您可以使用copyobj h = plot([1:0.2:10]) xx=get(h) figure copyobj(h,gca) 这会将绘图复制到新图形上 见: 更新 我不认为您可以直接从结构xx创建,尝试这样做: h = plot([1:0.2:10]) xx=get(h) h2

我有绘图的处理程序,或图形的处理程序 例如:


此处理程序包含所有打印信息,如何再次打印?这是一个关于
绘图的简单示例,但它应该也适用于
切片

我不知道是否有更简单的方法,但在扩展数据和YData中有x,y值。

做:

您可以使用copyobj

h = plot([1:0.2:10])
xx=get(h)
figure
copyobj(h,gca)
这会将绘图复制到新图形上

见:

更新

我不认为您可以直接从结构xx创建,尝试这样做:

h = plot([1:0.2:10])
xx=get(h)

h2 = plot(0,0)
set(h2,xx)
抛出错误

Error using graph2d.lineseries/set
Changing the 'Annotation' property of line is not allowed.
您需要手动设置一些属性值,如下所示:

h = plot([1:0.2:10])
xx=get(h)


figure
h2 = plot(0.0)

names = fieldnames(xx);

fieldCount = size(names,1);

protectedNames = {'DisplayName' 'Annotation' 'BeingDeleted' 'Type' 'Parent'}

for i = 1:fieldCount
    name = names{i};
    if ( ismember(protectedNames, name) == false  )


        set(h2, name, getfield(xx,name))

    end
end

yy=get(h2)

如果我正确理解了您的问题,您希望使用struct
xx
复制绘图。 ccook提供的答案是正确的,但这里有一个较短的方法来实现您的目标:

figure
h2 = plot(0);
ro_props = [fieldnames(rmfield(xx, fieldnames(set(h2)))); 'Parent'];
xx = rmfield(xx, ro_props);
set(h2, xx)
最后一个
set
命令使用struct
xx
设置所有值并再现绘图。请注意,在调用
set
之前,只读属性
ro_props
将从
xx
中删除


编辑:修改答案以根据自动检测只读属性。

我相信这不是OP想要的。这将从handle
h
中提取数据,而不是从struct
xx
中提取数据。此外,这不处理其他属性,如线条样式、颜色等。这是如何合并struct
xx
?啊-我的错误(认为这是为了显示信息)我认为要好得多,但它看起来有点笨拙。在
循环
中不需要,您可以将结构直接输入到
集合
中。您不能设置所有属性,因为有些属性是只读的-循环将显示该选择。您可以对protectedNames进行索引,将其从名称中删除,并通过分配修改后的数组保存一些行。我同意它的庞大,对于生产,我会转移到一个函数并动态处理只读方面。您必须使用
rmfield
删除这些字段。看一看我的答案。非常好-最后一步是动态查找只读属性名。@cOK我很想知道如何操作:-)我也一样,似乎很合适:@EitanT谢谢您的链接。
h = plot([1:0.2:10])
xx=get(h)


figure
h2 = plot(0.0)

names = fieldnames(xx);

fieldCount = size(names,1);

protectedNames = {'DisplayName' 'Annotation' 'BeingDeleted' 'Type' 'Parent'}

for i = 1:fieldCount
    name = names{i};
    if ( ismember(protectedNames, name) == false  )


        set(h2, name, getfield(xx,name))

    end
end

yy=get(h2)
figure
h2 = plot(0);
ro_props = [fieldnames(rmfield(xx, fieldnames(set(h2)))); 'Parent'];
xx = rmfield(xx, ro_props);
set(h2, xx)