2012-07-12 177 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