2012-07-12 174 views
0

我想在同一個圖上繪製兩個數據集。兩個數據都是同一天,兩種情況下的x軸都是帶日期和時間的完整時間(格式爲dd:mm:yyyy hh:mm:ss)。然而,在兩種情況下觀察到的觀察次數可能不同,觀察到的觀察次數也可能不同。當我分別繪製每個文件夾中的Excel文件時,代碼工作正常。然而,我必須爲整個月的每一天繪製相同的情節(每個情節將基於一個文件中的數據)。所以,我把代碼放在for循環中。但令我驚訝的是,加熱不再起作用。我得到的錯誤是:for循環在matlab中不起作用

Error in ==> addaxis at 108 
hplt = plot(varargin{:}); 

Error in ==> crossplot at 17 
addaxis(putdata.datenos,calldata.ltp,'r-'); 

其中crossplot是我的腳本文件的名稱。而addaxis是我從文件交換下載並安裝的一個函數。它基本上提供了在同一圖表中繪製兩個或更多不同軸的便捷方式。

現在我知道在每種情況下數據點的數量是不同的。但是,當我單獨爲工作區中的每個文件運行代碼時,代碼仍然正常工作。它只會在我將它放入for循環時發生錯誤。你能幫我解決這個問題嗎?我完全被髮生了什麼事情弄糊塗了?我正在使用的代碼如下:

cd('H:/heckyl intern/no analysis/pivots/ce 5200 28 jun'); 

callnames=dir('*.xlsx'); 

cd('H:/heckyl intern/no analysis/pivots/pe 5200 28 jun'); 

putnames=dir('*.xlsx'); 

for i=1:length(callnames) 
    calldata=csv2struct(['H:/heckyl intern/no analysis/pivots/ce 5200 28 jun/' 
         callnames(i).name]); 
    putdata=csv2struct(['H:/heckyl intern/no analysis/pivots/pe 5200 28 jun/' 
         putnames(i).name]); 
    [tempname remain]=strtok(callnames(i).name,'.'); 
    figname=[tempname '.fig']; 
    calldata.datenos=datenum(calldata.xchangefeedtime); 
    putdata.datenos=datenum(putdata.xchangefeedtime); 
    plot(calldata.datenos,calldata.ltp); 
    addaxis(putdata.datenos,calldata.ltp,'r-'); 
    saveas(gcf,figname); 
    close(gcf); 
end 

PS:我很抱歉長查詢。但我是matlab的新用戶,不知道整個Matlab術語。這是我在這個板子上的第一個問題。無論如何,先謝謝你幫助我。

+1

你可以嘗試在調試模式下一步一步地運行你的代碼來觀察你的變量。或者,你可以添加一些'disp'語句來判斷髮生了什麼。 – wap26 2012-07-12 12:21:37

+1

由於您是新手,您可以嘗試使用matlab中的幫助文件,方法是輸入:doc獲取幫助。另外,請嘗試縮進代碼以獲得更好的可讀性。 – RRikesh 2012-07-12 12:16:01

+1

你應該檢查你的變量'callnames'和'putnames'中的文件名數目和順序是否相同。 – 2012-07-12 12:33:15

回答

0

我不知道addaxis,我的Matlab沒有它。它是文件交換中的一個嗎?你可以使用情節和舉行,你不需要它的聲音addaxis。試試這個:

for i=1:length(callnames) 
     calldata=csv2struct(['H:/heckyl intern/no analysis/pivots/ce 5200 28 jun/' 
          callnames(i).name]); 
     putdata=csv2struct(['H:/heckyl intern/no analysis/pivots/pe 5200 28 jun/' 
          putnames(i).name]); 
     [tempname remain]=strtok(callnames(i).name,'.'); 
     calldata.datenos=datenum(calldata.xchangefeedtime); 
     putdata.datenos=datenum(putdata.xchangefeedtime); 
     plot(calldata.datenos,calldata.ltp); 
     hold on; 
     plot(putdata.datenos,calldata.ltp,'r-') 
     figname=[tempname '.fig']; 
     saveas(gcf,figname); 
     close(gcf); 

    end