0

我正在尝试在同一张图上绘制两个数据集。两个数据都是同一天的,两种情况下的 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 行话。这是我在这个板上的第一个问题。无论如何,提前感谢您帮助我。

4

1 回答 1

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
于 2012-07-12T13:35:06.043 回答