2014-11-07 13 views
19

Vì MATLAB đã thay đổi công cụ hình thành của nó trong R2014b, tôi đã quyết định chạy lại một số mã của mình để có được con số đẹp hơn trong số chúng. Thật không may, người cuối cùng tôi có là một mã mà mất độ tuổi để chạy, và tôi muốn tránh cao để chạy lại mã cho một con số đẹp hơn.Vẽ lại một hình được lưu trong 2013b trong 2014b

Tôi đã lưu kết quả trong tệp .fig trong R2013b. Tuy nhiên, nếu tôi mở nó trong R2014b, nó vẫn có định dạng cũ.

Có thể vẽ lại hình bằng cách sử dụng công cụ vẽ MATLAB R2014b không? Nếu có, làm thế nào tôi có thể làm điều đó?

LƯU Ý: Theo nghĩa đen, hình này được mở và vẽ bằng công cụ mới, tuy nhiên, nó vẫn giữ nguyên định dạng cũ. Trong khi một con số mới với lệnh title() sẽ vẽ một tiêu đề lớn, đậm, nếu vẽ lại hình này bằng cách sử dụng "rút thăm" hoặc tôi tạo mã cho nó, định dạng vẫn giữ nguyên.

Ví dụ: Con số này được tạo trong năm 2013b và được vẽ lại vào năm 2014b. Bạn có thể thấy rằng tiêu đề không âm mưu trong cùng một định dạng như một title('whatever') sẽ âm mưu trong xử lý đồ họa mới. Dường như '.fig' lưu và đặt giá trị mặc định cho phiên bản đã được tạo. Vì vậy, màu sắc âm mưu, tiêu đề, nhãn vv sẽ trông giống như xử lý đồ họa cũ khi vẽ lại.

enter image description here

này có thể được thử nghiệm với đoạn mã sau. Lưu ý rằng đây là một vấn đề quá đơn giản, câu hỏi không rõ ràng về tiêu đề hoặc nhãn, nhưng tất cả các công cụ đồ họa nói chung.

rng(1) 


figure() 
x = 1:50; 
y = rand(1, 50); 

plot(x,y) 
title('this NICE Title') 
xlabel('labels!') 
ylabel('some other labels','Interpreter','Latex') 

Nếu mã này được chạy trong 2013b và 2014b, lưu lại dưới dạng vả trong cả hai và sau đó mở như vả trong cả hai, 2 nhân vật tiếp theo xuất hiện:

enter image description here enter image description here

Các 2013b vả file: http://s000.tinyupload.com/index.php?file_id=02053933004513599550

+0

'drawnow' không làm gì cả? Ngoài ra, nó là một âm mưu đơn giản ('cốt truyện' hoặc' phân tán' đầu ra?). Nếu vậy bạn có thể 'lấy dữ liệu ra khỏi hình khá dễ dàng. (Contours hoặc một cái gì đó như thế - không dễ dàng như vậy). – nkjt

+0

@nkjt chắc chắn không phải là một âm mưu dễ dàng. Nó có 12 subplots với số lượng dữ liệu khác nhau trên chúng. –

+0

Bạn có thể tải lên bản gốc .fig ở đâu đó không? – chappjc

Trả lời

6

Có một đường vòng để thực hiện việc này - chỉ cần sử dụng hgopen để tải hình và sau đó trích xuất dữ liệu để vẽ lại nó trong 2014b:

h1=hgopen('test.fig');    % h1 = handle to the figure 
allaxes=get(h1,'children');   % allaxes = array with axes handles 
for a=1:length(allaxes) 
    ax=allaxes(a); 
    allines=get(ax,'children');  % all lines in current axes 
    for l=1:length(allines) 
     lin=allines(l); 
     values=get(lin,'ydata'); % values of the current line 
     subplots{a}{l}=values; 
    end 
end 

Sau đó, bạn có thể sử dụng mảng ô subplots để tạo lại các ô bằng tay. Đó là một cách nhàm chán để làm điều đó, nhưng có thể có giá trị cố gắng nếu tái tạo ra đầu ra mất rất lâu.

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