for循环在matlab中不起作用

时间:2012-07-12 12:11:24

标签: matlab loops for-loop

我试图在同一图表上绘制两个数据集。两个数据都是同一天,两个案例中的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术语。这是我在这个委员会的第一个问题。无论如何,提前感谢帮助我。

1 个答案:

答案 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