2014-10-07 66 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

相關問題