2014-10-07 68 views
0

我试图在X轴上绘制日期相同的图上的3行。我能做到完美,而不必在X轴上的日期,但是当我试图把年x轴我得到这个错误:在x轴上以octave绘制日期:“error:__plt2vv__:向量长度必须匹配”

error: __plt2vv__: vector lengths must match 

我不熟悉MATLAB,这是我第一次tiral,这里是我的代码,我尝试绘制的部分:

 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*') 

并且在x轴上有日期而不是随机数? 我会很感激任何指导。

+0

您可以告诉我们L_Tilde,U_Tilde和C有什么价值吗? – 2014-10-07 15:59:12

+0

@AnderBiguri当然可以。我编辑了这个问题。请检查编辑过的。 – Singu 2014-10-07 16:03:50

+1

mmm C的一些例子?你的问题可能是由于线图中t和C的长度不同(datenum(t,1,1),C,'co *'); – 2014-10-07 16:05:54

回答

1

我认为你想要做的是改变t的形状,以便它是一个1x144矩阵,其中有重复的日期(1996年12倍,1997年12倍等)。然后你可以绘制(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 
+0

谢谢,这很好。现在我遇到了另一个问题,那就是我正在运行一个循环这个程序,并且我发现我的文本文件没有相同的维度,我的意思是还有131个元素的文件。所以我需要使它也适用于1 * 131的矩阵。 – Singu 2014-10-09 08:30:26

相关问题