5

有没有办法将图形的外部位置属性分配给具有给定句柄的图形?

例如,如果我想将一个图定义为图 1,我会使用:

 figure(1)
 imagesc(Arrayname) % I.e. any array

我还可以使用以下代码更改图形的属性:

figure('Name', 'Name of figure','NumberTitle','off','OuterPosition',[scrsz(1) scrsz(2) 700 700]);

是否有一个属性名可以用来将外部位置属性分配给分配为图 1 的图形?

我问这个的原因是因为我正在使用一个名为 save2word 的命令(来自 MATLAB 文件交换)将一些绘图从我制作的函数保存到 word 文件中,并且我想限制我打开的图形数量它这样做。

我剩下的代码是:

plottedloops = [1, 5:5:100]; % Specifies which loops I want to save


GetGeometry = getappdata(0, 'GeometryAtEachLoop') % Obtains a 4D array containing geometry information at each loop


NumSections = size(GetGeometry,4); %Defined by the fourth dimension of the 4D array

for j = 1:NumSections
    for  i = 1:plottedloops
    P = GetGeometry(:,:,i,j);

    TitleSize = 14;
    Fsize = 8;
    % Save Geometry

    scrsz = get(0,'ScreenSize'); %left, bottom, width height   


  figure('Name', 'Geometry at each loop','NumberTitle','off','OuterPosition',[scrsz(1) scrsz(2) 700 700]); This specifies the figure name, dims etc., but also means multiple figures are opened as the command runs.

% I have tried this, but it doesn't work:
% figure(0, 'OuterPosition',[scrsz(1) scrsz(2) 700 700]);

    imagesc(P), title('Geometry','FontSize', TitleSize), axis([0 100 0 100]);

    text(20,110,['Loop:',num2str(i)], 'FontSize', TitleSize); % Show loop in figure
    text(70,110,['Section:',num2str(j)], 'FontSize', TitleSize);% Show Section number in figure

    save2word('Geometry at each loop'); % Saves figure to a word file

end

结尾

谢谢

4

2 回答 2

3

如果在创建图窗时捕获图窗句柄

figH = figure;

您可以随时分配属性

set(figH,'OuterPosition',[scrsz(1),scrsz(2),700,700]);

您还可以将图形手柄收集在矢量内,然后一次设置所有尺寸。

如果由于某种原因无法捕获图形句柄,您可以使用它findall来查找具有特定名称的图形,或gcf获取当前(最后选择/打开)图形的句柄。

于 2010-04-07T14:31:12.933 回答
0

以下是一些建议/更正:

  • 您的第二个 for 循环应如下所示:

    for i = plottedloops
    

    这是因为plottedloops已经是一个数组,并且您希望i在每次通过循环时获取数组中的每个顺序值。例如,for 循环的常见形式是:

    for i = 1:someScalarValue
    

    该术语为您1:someScalarValue 创建一个数组。

  • 看起来你想在图形窗口中绘制一些东西,然后用 保存它save2word,然后绘制其他东西,然后保存,等等。因此,我建议在你的 for 循环之外创建你的图形窗口,并简单地在其中重新绘制窗口内容循环。如果将这两行移到循环之外:

    scrsz = get(0,'ScreenSize'); %left, bottom, width height   
    figure('Name', 'Geometry at each loop','NumberTitle','off',...
           'OuterPosition',[scrsz(1) scrsz(2) 700 700]);
    

    那么您一次只能打开一个图形。

于 2010-04-07T16:28:58.127 回答