2010-04-07 19 views
5

có cách nào để gán thuộc tính vỏ ngoài của một hình vào một hình có tay cầm đã cho không?Chỉ định kích thước hình cho một hình có tay cầm đã cho (MATLAB)

Ví dụ, nếu tôi muốn xác định một nhân vật như nói hình 1, tôi sẽ sử dụng:

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

Tôi cũng có thể thay đổi các thuộc tính của một nhân vật sử dụng mã:

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

Có một đặc tính tôi có thể sử dụng để gán thuộc tính outerposition cho hình được chỉ định như hình 1 không? Lý do tôi yêu cầu điều này là vì tôi đang sử dụng một lệnh gọi là save2word (từ trao đổi tập tin MATLAB) để lưu một số ô từ một hàm tôi đã tạo thành một tệp từ và tôi muốn giới hạn số lượng các số liệu Tôi đã mở vì nó thực hiện điều này.

Phần còn lại của mã tôi có là:

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 

cuối

Cảm ơn

Trả lời

3

Nếu bạn nắm bắt được xử lý hình khi bạn tạo hình

figH = figure; 

Bạn có thể chỉ định thuộc tính bất kỳ lúc nào bạn muốn

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

Bạn cũng có thể thu thập các hình xử lý bên trong một vectơ và sau đó đặt tất cả các kích thước cùng một lúc.

Nếu bạn không thể nắm được tay cầm hình vì lý do nào đó, bạn có thể sử dụng findall để tìm hình có tên cụ thể hoặc gcf để xử lý hình ảnh hiện tại (được chọn gần đây nhất).

+0

Điều gây bực mình về điều này là dường như không thể tạo một hình có tay cầm và thuộc tính cụ thể không hiển thị. Tôi thường tạo một hình với 'Có thể nhìn thấy' được đặt thành 'tắt', sau đó tạo nội dung của hình, và sau đó làm cho nó hiển thị khi nó đã sẵn sàng. Thực tế là bạn không thể vừa thiết lập được một xử lý của con số và khả năng hiển thị của nó mà không tạo ra một nhân vật có thể nhìn thấy đã dẫn tôi đến con đường của nhiều công việc xung quanh. – EddyTheB

+0

@EddyTheB: tại sao bạn muốn đặt một xử lý cụ thể? Có thể có thứ tôi không nhìn thấy, nhưng việc thiết lập thuộc tính 'tag' thường làm thủ thuật cho tôi, để tôi thậm chí có thể có các" xử lý "ẩn nhưng vẫn có thể truy cập một cách đặc biệt thông qua' figH = findall (0, 'tag', 'mySpecificFigureHandle') ' – Jonas

+0

Tôi có lớp làm tăng một con số, và một trong các thuộc tính của lớp là xử lý cho hình. Vì vậy, nói rằng tôi gọi lớp và nó tạo ra một con số với xử lý '2', nhưng sau đó tôi đóng con số và mở một số con số khác, con số mới sẽ có xử lý '2'. Và tay cầm trong hình gốc chỉ vào một hình không phù hợp. – EddyTheB

0

Dưới đây là một gợi ý vài/chỉnh sửa:

  • thứ hai của bạn cho vòng lặp sẽ trông như thế này:

    for i = plottedloops 
    

    Điều này là do plottedloopsđã một mảng, và bạn muốn i để đưa vào mỗi giá trị tuần tự trong mảng cho mỗi lần truyền qua vòng lặp. Ví dụ, một hình thức phổ biến cho một for loop là:

    for i = 1:someScalarValue 
    

    Trường hợp hạn 1:someScalarValuetạo một mảng cho bạn.

  • Có vẻ như bạn đang muốn vẽ một cái gì đó trong một cửa sổ hình, sau đó lưu nó với save2word, sau đó âm mưu cái gì khác, sau đó lưu rằng, vv Vì vậy, tôi khuyên bạn nên tạo cửa sổ hình của bạn ngoài của bạn cho vòng và chỉ cần thay thế nội dung cửa sổ trong vòng lặp.Nếu bạn di chuyển hai dòng này ra ngoài vòng lặp của mình:

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

    Sau đó, bạn chỉ nên có một hình tại một thời điểm mở.

Các vấn đề liên quan