我想在同一个图上绘制两个数据集。两个数据都是同一天,两种情况下的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