2010-04-07 74 views
5

有沒有方法將圖形的外部屬性賦值給具有給定句柄的圖形?將圖形大小分配給具有給定句柄的圖形(MATLAB)

例如,如果我想的說圖1來定義一個數字,我會用:

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

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

我也可以使用代碼更改人物的屬性是否有一個屬性名可用於將外部屬性賦值給圖1所指定的數字?

我問這個的原因是因爲我使用了一個名爲save2word(從MATLAB文件交換)命令來保存從我對一個字文件進行了功能的一些情節,我想限制的數字位數我已經開放,因爲它這樣做。

我的代碼的其餘部分是:

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 

感謝

回答

3

如果捕獲數字處理,當你創建人物

figH = figure; 

你可以隨時分配屬性

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

您還可以收集矢量內的圖形手柄,然後一次設置所有大小。

如果由於某種原因無法捕捉圖形手柄,可以使用findall查找具有特定名稱的圖形,或者使用gcf來獲取當前(上次選定/打開的)圖形的句柄。

+0

令人沮喪的是,看起來不可能創建具有不可見的特定句柄和屬性的圖形。我經常創建一個'Visible'設置爲'off'的圖形,然後創建圖形的內容,然後在準備就緒時將其顯示出來。事實上,你不能既設置圖形的手柄,也沒有首先創建一個可見的圖形,它的可見性已導致我走了許多不雅的變通的道路。 – EddyTheB 2017-01-19 10:46:56

+0

@EddyTheB:你爲什麼要設置一個特定的句柄?也許有些東西我沒有看到,但是設置'tag'屬性對我來說通常是個訣竅,所以我甚至可以擁有「隱藏」的手柄,但仍然可以通過'figH = findall(0, 'tag','mySpecificFigureHandle')' – Jonas 2017-01-19 13:29:30

+0

我有一個可以產生一個數字的類,而這個類的其中一個屬性就是這個數字的句柄。所以說,我稱這個類,它創建一個處理'2'的數字,但是然後我關閉這個數字並打開一些其他數字,那個新數字將處理'2'。原圖中的手柄指向不合適的數字。 – EddyTheB 2017-01-19 13:53:57

0

這裏有一些建議/更正:

  • 您的循環第二應該是這樣的:

    for i = plottedloops 
    

    這是因爲plottedloops已經一個數組,你想i每次通過循環時都要在數組中獲取每個順序值。例如,對於一個for loop常見的形式是:

    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]); 
    

    然後,您應該一次只打開一個圖形。