在 x 轴上以八度为单位绘制日期:"error: __plt2vv__: vector lengths must match"



我正试图在同一张图上绘制3条日期在X轴上的线。我可以在没有日期的情况下在x轴上完美地完成,但当我试图将年份放在x轴时,我会出现以下错误:

    error: __plt2vv__: vector lengths must match

我不熟悉MATLAB,这是我的第一篇长篇大论,下面是我试图绘制的代码部分:

        data = importdata('2.txt');
        C = data.data.';
        C = C';
        N = length(C);
        H = 12;
        w = ones(2 * H + 1, 1);

       Lambda_Tilde = NaN * zeros(N, 1);
       L_Tilde = NaN * zeros(N, 1);
       U_Tilde = NaN * zeros(N, 1);
       for t = (H+1):(N-H-1)
          Lambda_Tilde(t) = sum(w .* C(t-H:t+H)) / sum(w);
          L_Tilde(t) = poissinv(0.005, Lambda_Tilde(t));
          U_Tilde(t) = poissinv(0.995, Lambda_Tilde(t));
       end

      clf
      f=figure();
      t= (1996 : 2007);
      dateFormat = 10;
      datetick('x',dateFormat)
      plot(datenum(t,1,1), C, 'co*');
      hold on
      plot(datenum(t,1,1) , L_Tilde, 'g-.');
      plot(datenum(t,1,1) , U_Tilde, 'g-.');
      pause;

现在我明白问题出在哪里了。C是一个1*144矩阵,所以有没有办法尝试绘制

     plot(1:N , C , 'co*' ) 

在xaxis上有日期而不是随机数字?我将感谢任何指导。

我认为你想做的是改变t的形状,使其成为一个1x144矩阵,其中包含重复的日期(1996 12x、1997 12x等)。然后你可以绘制(t,C),它应该可以工作。要更改形状,可以使用:

dates = [1996:2007];  %Creates the original dates matrix (your t)
N = size(dates,2);    %finds the length of that matrix (12 in your case)
M = 12;               %sets the number of repetitions
dates= repmat(dates,M,1);     %repeats each date M times, but they are still listed in columns
dates = reshape(dates,N*M,1); %changes the shape from columns containing the same shape to 1 column

相关内容

最新更新