2014-11-07 14 views
19

MATLAB, R2014b'deki şekil motorunu değiştirdiği için bazı kodlarımdan daha iyi görünen rakamlar elde etmek için yeniden çalışmaya karar verdim. Ne yazık ki, sahip olduğum sonuncusu çalıştırmak için yaş alan bir koddur ve ben daha güzel bir şekil için kodu yeniden çalıştırmaktan kaçınmak isterim.2014b'de 2013b'de kaydedilen bir rakamı yeniden çizin

Sonucu, R2013b'de bir .fig dosyasına kaydettim. Ancak, R2014b'de açarsam, hala eski biçime sahiptir.

Şekil, MATLAB R2014b çizim motorunu kullanarak yeniden çizilebilir mi? Eğer öyleyse, nasıl yapabilirim?

NOT: Tam anlamıyla, şekil yeni motorla açılır ve çizilir, ancak eski biçimini korur. title() komutu ile yeni bir rakam güzel, kalın bir başlık çizerken, bu resmi "drawnow" kullanarak yeniden çizerseniz veya kod üretiyorsa, format aynı kalır.

Örnek: Bu rakam 2013b'de oluşturuldu ve 2014b'de yeniden çizildi. Başlığın, title('whatever') ile aynı biçimde çizilmediğini ve yeni grafik tutamaçlarını çizebileceğini görebilirsiniz. '.fig', oluşturulduğu sürümün varsayılan değerlerini kaydeder ve ayarlar. Böylece çizim renkleri, başlıklar, etiketler vb. Yeniden çizildiğinde eski grafik tutamaçlarına benzeyecektir.

enter image description here

Bu

aşağıdaki kod ile test edilebilir. Bunun çok basitleştirilmiş bir sorun olduğunu unutmayın, soru açık bir şekilde başlıklar veya etiketler değil, genel olarak tüm grafik öğeleriyle ilgilidir. Bu kod, 2013b ve 2014b çalıştırmak hem de şekil olarak kaydedilir ve daha sonra hem şekil olarak açılırsa

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ümüzdeki 2 rakamlar görünür:

enter image description here enter image description here

2013b incir file: http://s000.tinyupload.com/index.php?file_id=02053933004513599550

+0

'drawnow' hiçbir şey yapmıyor mu? Ayrıca, basit bir komplo ('arsa' veya 'scatter' çıkışı mı?). Eğer öyleyse verileri kolaylıkla anlayabiliyorsunuz. (Kontür ya da bunun gibi bir şey ... o kadar kolay değil). – nkjt

+0

@nkjt kesinlikle kolay bir arsa değildir. Üzerinde farklı miktarda veri bulunan 12 alt yazı vardır. –

+0

Orijinal .fig'i bir yere yükleyebilir misiniz? – chappjc

cevap

6

Bunu yapmak için bir dolambaçlı yol var - sadece rakamı yüklemek için hgopen kullanarak ve daha sonra verileri 2014b'de yeniden çizmek için ayıklayın:

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 

Daha sonra elle tekrar araziler yapmak subplots hücre dizisi kullanabilirsiniz. Bunu yapmak için sıkıcı bir yoldur, ancak çıkışı yeniden oluşturmak çok uzun sürerse denemeye değer olabilir.