我想在同一個圖上繪製兩個數據集。兩個數據都是同一天,兩種情況下的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術語。這是我在這個板子上的第一個問題。無論如何,先謝謝你幫助我。
你可以嘗試在調試模式下一步一步地運行你的代碼來觀察你的變量。或者,你可以添加一些'disp'語句來判斷髮生了什麼。 – wap26 2012-07-12 12:21:37
由於您是新手,您可以嘗試使用matlab中的幫助文件,方法是輸入:doc獲取幫助。另外,請嘗試縮進代碼以獲得更好的可讀性。 – RRikesh 2012-07-12 12:16:01
你應該檢查你的變量'callnames'和'putnames'中的文件名數目和順序是否相同。 – 2012-07-12 12:33:15