我试图在同一图表上绘制两个数据集。两个数据都是同一天,两个案例中的x轴都是一个时间源,包含日期和时间(格式为dd:mm:yyyy hh:mm:ss)。然而,在两种情况下观察的数量可以是不同的,并且观察到的值的时间也可以是不同的。当我单独为文件夹中的每个excel文件绘图时,代码工作正常。但是,我必须为整个月的每一天绘制相同类型的绘图(每个绘图将基于来自一个文件的数据)。所以,我把代码放在for循环中。但令我惊讶的是,addaxis将不再起作用。我得到的错误是:
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术语。这是我在这个委员会的第一个问题。无论如何,提前感谢帮助我。
答案 0 :(得分: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