2010-04-07 11 views
5

Czy istnieje sposób przypisania właściwości zewnętrznej figury do figury z danym uchwytem?Przypisywanie rozmiaru rysunku do figury z danym uchwytem (MATLAB)

Na przykład, gdybym chciał zdefiniować postać jak powiedzieć figura 1, chciałbym używać:

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

mogę też zmienić właściwości rysunku za pomocą kodu:

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

Czy istnieje nazwa właściwości, której można użyć do przypisania właściwości zewnętrznej do figury przypisanej jako rysunek 1?

Powodem, dla którego o to pytam, jest to, że używam polecenia o nazwie save2word (z wymiany plików MATLAB), aby zapisać niektóre wykresy z funkcji, którą utworzyłem w pliku tekstowym, i chcę ograniczyć liczbę cyfr Otwarłem się, jak to robi.

Reszta kodu mam to:

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 

końcowych

Dzięki

Odpowiedz

3

Jeśli uchwycić uchwyt rys podczas tworzenia rys

figH = figure; 

Można przypisuj właściwości, gdy tylko chcesz

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

Możesz także zbierać figurki wewnątrz wektora, a następnie ustawić wszystkie rozmiary jednocześnie.

Jeśli nie możesz uchwycić rączki figurki z jakiegoś powodu, możesz użyć findall, aby wyszukać figurę o określonej nazwie, lub gcf, aby uzyskać uchwyt aktualnej (ostatnio zaznaczonej/otwartej) figury.

+0

To frustrujące w tym, że niemożliwe jest stworzenie figury z określonym uchwytem i właściwościami, które nie są widoczne. Często tworzę figurkę z "Widocznością" ustawioną na "wyłączone", a następnie utwórz zawartość figurki, a następnie pokaż ją, gdy będzie gotowa. Fakt, że nie możesz jednocześnie ustawić figury, a jej widoczność bez wcześniejszego utworzenia widocznej figury doprowadziła mnie na ścieżkę wielu nieeleganckiej pracy. – EddyTheB

+0

@EddyTheB: dlaczego chcesz ustawić określony uchwyt? Może jest coś, czego nie widzę, ale ustawienie właściwości 'tag' zwykle robi dla mnie sztuczkę, tak że mogę nawet mieć" ukryte "uchwyty, ale wciąż jestem w stanie uzyskać konkretny dostęp do figury przez' figH = findall (0, 'tag', 'mySpecificFigureHandle') ' – Jonas

+0

Mam klasę, która podnosi figurę, a jedną z właściwości klasy jest uchwyt dla figury. Powiedzmy, że nazywam klasę i tworzy ona figurę z uchwytem "2", ale potem zamykam figurkę i otwieram inną figurę, ta nowa postać będzie obsługiwać "2". Uchwyt na oryginalnej figurze wskazuje na niewłaściwą figurę. – EddyTheB

0

Oto kilka sugestii/korekty:

  • Twój drugi pętli powinna wyglądać następująco:

    for i = plottedloops 
    

    To dlatego plottedloops jest już tablicą, a chcesz i do przyjmowania każdej wartości sekwencyjnej w tablicy dla każdego przejścia przez pętlę. Na przykład, powszechną formą dla for loop jest:

    for i = 1:someScalarValue 
    

    Jeżeli termin 1:someScalarValuetworzy tablicę dla Ciebie.

  • To wygląda jakbyś chciał wykreślić coś w oknie rysunku, a następnie zapisać go save2word, a następnie wykreślić coś innego, a następnie zapisać, że itd. W związku z tym proponuję, tworząc okno postać poza swojej pętli i po prostu przesyła zawartość okna w pętli.Jeśli przesuniesz te dwie linie poza pętle:

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

    Powinieneś mieć tylko jedną postać naraz.

Powiązane problemy