0

同じグラフに 2 つのデータセットをプロットしようとしています。両方のデータは同じ日のもので、どちらの場合も x 軸は日付と時刻を含む時刻フィードです (dd:mm:yyyy hh:mm:ss の形式)。ただし、両方のケースで観測数が異なる可能性があり、値が観測される時間も異なる可能性があります。フォルダー内の各 Excel ファイルのプロットを個別に行うと、コードは正常に機能します。ただし、月全体の各日に対して同じ種類のプロットを描画する必要があります (各プロットは 1 つのファイルのデータに基づいています)。そのため、コードを for ループに入れました。しかし、まったく驚いたことに、アダクシスは機能しなくなります。私が得ているエラーは次のとおりです。

Error in ==> addaxis at 108
hplt = plot(varargin{:});

Error in ==> crossplot at 17
addaxis(putdata.datenos,calldata.ltp,'r-');

ここで、crossplot はスクリプト ファイルの名前です。addaxis は、ファイル交換からダウンロードしてインストールした機能です。基本的に、同じグラフに 2 つ以上の異なる軸をプロットする便利な方法を提供します。

これで、データ ポイントの数がケースごとに異なることがわかりました。しかし、ワークスペース内の各ファイルに対して個別に実行すると、コードは正常に機能します。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にはありません。それはファイル交換からのものですか?プロットアンドホールドを使用するだけで、サウンドによる追加軸は必要ありません。これを試して:

    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 に答える