2012-02-02 7 views
2

Я работаю с некоторым кодом Matlab, который обрабатывает данные (в Kalman Filter) и создает серию контурных графиков. Он работает на сервере RHEL 4 в matlab 2006a в течение нескольких лет, но мой босс недавно попросил обновить все серверы до RHEL 6 ... и по крайней мере matlab 2007a. Я разработал все амортизации между этими версиями, но у меня все еще есть одна серьезная проблема.Построение нескольких фигур в Matlab

Код, который создает и печатает различные контурные графики, работает в зависимости от того, какой из трех графиков создается первым. Это выглядит следующим образом: enter image description here

К сожалению, в ближайшие два участка выглядят следующим образом:

enter image description here

три цифры нанесены независимо друг от друга в отдельных функциях, и я использую clf("reset"); до и после создания каждой фигуры. Каждая функция работает сама по себе, но когда все три построены, вторая и третья цифры все испорчены. У кого еще возникла эта проблема? Вот код, который создает одну из фигур.

function Crd = TEC_plot(ITEC,RT,Param,Input,t,OutPath,RxExtAll,Time) 
% Generate TEC plot 
    Function_for_Spline_Smoothing = [.05 .1 .05; .1 .4 .1; .05 .1 .05]; 
    ITEC = conv2(ITEC,Function_for_Spline_Smoothing,'same'); % add more of these lines to make contours smoother 
    ITEC = conv2(ITEC,Function_for_Spline_Smoothing,'same'); % add more of these lines to make contours smoother 
% ITEC = conv2(ITEC,Function_for_Spline_Smoothing,'same'); % add more of these lines to make contours smoother 
% ITEC = conv2(ITEC,Function_for_Spline_Smoothing,'same'); % add more of these lines to make contours smoother 

    earth('CAMERA',RT.Camera,'FIG',1); 
    figure; 
    warning off; hold on; 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
% Changed 13 February 2007 to make plots prettier 
    thinning_scale=2; % (1 to 10) increase this value to thin the density of the contour number labels 
    [cscale,hgt]=m_contour(Param.Grid.LonAxis,Param.Grid.LatAxis,ITEC, ... 
     round(RT.Levels(1:thinning_scale:end)/5)*5); 
    hold on 
    m_contourf(Param.Grid.LonAxis,Param.Grid.LatAxis,ITEC,RT.Levels); 
    shading flat 

    m_coast('line','color','y','LineWidth',1); 

    clabel(cscale,hgt,'labelspacing',72,'rotation',0,'fontsize',10 ... 
         ,'FontAngle','italic','color','w'); 
    axis([-.65 .6 .25 1.32]) % hardwiring axis length since the coastline runs off of the plot 
% Changed 13 February 2007 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 


% %-------------------- to include different station markers for different sources ------------------- 
    if ~isempty(Input.Data) % Plot receivers used in this inversion 

     Crd=uniquerows(double(cat(1,RxExtAll))); 
     RxType=round(Crd(:,4)); 
     Crd=cartsph(Crd)*180/pi; 

     i1 = find((Crd(:,3) > RT.Camera(3)).*(Crd(:,3) < RT.Camera(4)).*... 
        (Crd(:,2) > RT.Camera(1)).*(Crd(:,2) < RT.Camera(2)).*... 
        (RxType==1)); 

     i2 = find((Crd(:,3) > RT.Camera(3)).*(Crd(:,3) < RT.Camera(4)).*... 
        (Crd(:,2) > RT.Camera(1)).*(Crd(:,2) < RT.Camera(2)).*... 
        (RxType==2)); 

     i3 = find((Crd(:,3) > RT.Camera(3)).*(Crd(:,3) < RT.Camera(4)).*... 
        (Crd(:,2) > RT.Camera(1)).*(Crd(:,2) < RT.Camera(2)).*... 
        (RxType==3)); 

     m_plot(Crd(i1,3),Crd(i1,2),'ro','markersize',5,'LineWidth',2); 
%  m_plot(Crd(i1,3),Crd(i1,2),'r.','markersize',6,'LineWidth',2); 
     m_plot(Crd(i2,3),Crd(i2,2),'r^','markersize',5,'LineWidth',2); 
%  m_plot(Crd(i2,3),Crd(i2,2),'r.','markersize',6,'LineWidth',2); 
     m_plot(Crd(i3,3),Crd(i3,2),'rp','markersize',5,'LineWidth',2); 

     plot(-.6,.45,'ro','markersize',5,'LineWidth',2);text(-.55,.45,'CORS','Color','k') 
     plot(-.6,.39,'r^','markersize',5,'LineWidth',2);text(-.55,.39,'GPS/Met','Color','k') 
     plot(-.6,.33,'rp','markersize',5,'LineWidth',2);text(-.55,.33,'RTIGS','Color','k') 

    end 
% % ------------------------------------------------------------------------------- 

    hold off; warning on;axis off; 

% caxis([RT.Levels(1),(RT.Levels(length(RT.Levels)))/2]); colorbar('vert'); %Color bar from 0 to 50 --- for Low Solar Activity 
    caxis([RT.Levels(1),(RT.Levels(length(RT.Levels)))]); colorbar('vert'); %Color bar from 0 to 100 --- for High Solar Activity 

    title(sprintf('Total Electron Content Units x 10^1^6 m^-^2'),'Fontsize',11) 
    if size(Crd,1)==0, 
     title(sprintf('Total Electron Content Units x 10^1^6 m^-^2 Caution: No Data Available, IRI95 Only'),'Fontsize',10) 
    end 
    whitebg('w') 
    text(-0.6,0.22,sprintf('%s from %s to %s UT   NOAA/SWPC Boulder, CO USA (op.ver. 1.0)',datestr(Time(t)+1E-8,1),datestr(Time(t)+1E-8,15),datestr(Time(t)+1E-7+15/1440,15)),'Fontsize',11) 
    whitebg('w') 

% This option print to a file 
%  set(gcf, 'Position', [0,0,1950,1467]); 
%  print('-f1','-dpng','-painters',filename([OutPath,'{YYYY}{MM}{DD}{HRMN}_TEC'],Time(t))); 
%  system(['convert ', filename([OutPath,'{YYYY}{MM}{DD}{HRMN}_TEC.png'],Time(t)),' -scale 650x489 ',' -colors 256 ', filename([OutPath,'{YYYY}{MM}{DD}{HRMN}_TEC.png'],Time(t))]); 


% Printing a postscript file because requirements for the automatic reboot 
    print('-f1','-dpsc','-r1000','-painters', filename([OutPath,'{YYYY}{MM}{DD}{HRMN}_TEC'],Time(t))); 

% Convert the postscript file to jpg using ghostscripts 
    system(['gs -q -dBATCH -dNOPAUSE -r300 -sDEVICE=jpeg -sOutputFile=',filename([OutPath,'{YYYY}{MM}{DD}{HRMN}_TEC.jpg'],Time(t)),' ', filename([OutPath,'{YYYY}{MM}{DD}{HRMN}_TEC.ps'],Time(t))]); 
% Converting from jpg to png and reducing the size of the figure. 
    system(['convert ',filename([OutPath,'{YYYY}{MM}{DD}{HRMN}_TEC.jpg'],Time(t)),' -crop 2050x1675+325+775 ',' -scale 650x489 ',' -colors 256 ', filename([OutPath,'{YYYY}{MM}{DD}{HRMN}_TEC.png'],Time(t))]); 
% Removing the jpg and ps files (ask Cliff how can we put both files in just one command) 
    %system(['rm ',filename([OutPath,'*.jpg'],Time(t))]); 
    %system(['rm ',filename([OutPath,'*.ps'],Time(t))]); 
end 
+2

Уверен, что мы хотим увидеть код Oo – tim

+0

, почему код выглядит так? Я просто добавил раздел кода и вставил в код .... – GPSmaster

+0

Я изменил ваш код :) – tim

ответ

2

Постарайтесь не использовать clf, который очистит всю вашу фигуру, но использовать figure между ними, чтобы открыть три цифры независим. Посмотри, он будет работать :)

Edit: Это только гадать не видя код

+0

Я сейчас пытаюсь. Увидев, что это работает в командной строке только интерфейс без UI, будет «фигурировать», попытаться создать новое окно и вернуть ошибку? – GPSmaster

+0

'figure' просто открывает другое окно фигуры, и все графические команды будут отображаться на новом рисунке. Таким образом, после этого у вас будет 3 разных окна вместо того, чтобы всегда очищать один и тот же показатель и, вместо того, чтобы вносить в него данные – tim

+0

К сожалению, это не сработало. Первая цифра показывает только береговые линии, а вторая - полностью пустая:/Хмммм. Также как вы очищаете окно фигуры один раз, когда сохранили изображение? – GPSmaster

1

Одно предположение может быть с кодом, который генерирует окончательный файл PNG. При преобразовании JPG в PNG ваша вторая фигура неправильно обрезается.

Сначала команда print закреплена, чтобы использовать все, что показано на рисунке 1. Итак, чтобы убедиться, что вы рисуете рисунок, используя команду figure(1), укажите это. В качестве альтернативы измените команду печати, чтобы прочитать print(gcf ..., чтобы распечатать текущий рисунок.

Кроме того, обратите внимание, вы можете создать файл PNG непосредственно с print как в

print(gcf,'-dpng','-r1000',filename(...)) 

и пропустить преобразование PS в JPG в PNG шаг.

Жесткое кодирование окна цифр в print может объяснить, почему все работает независимо, но не вместе, если у вас есть несколько фигур. Просто догадка.

+0

Большое спасибо за советы! Я не закончил делать то, что вы сказали, но вы толкнули меня в правильном направлении. В итоге я определил каждый номер цифры вручную, и, сделав это, я обнаружил, что функция «earth()» указывает номер фигуры ... изменилась, и теперь все работает намного плавнее. Благодаря! О, и преобразования из ps-> jpg-> png раздражают, но необходимы по другим причинам. Я все еще сталкиваюсь с некоторыми другими проблемами с этими графиками, но я начну новую тему для этого и опубликую ссылку здесь. Еще раз спасибо. – GPSmaster

Смежные вопросы