2013-11-01 53 views
0

我有第一列「小時」的數組,其他13列是隨機測量。第一列中有幾個小時沒有。我想在缺少小時的情況下插入'9999'行,同時將第一列保留爲下一小時。根據邏輯語句將空行插入到具有位置的矩陣中

A=[1,3,4,76,88,3,54,6,33...;  
2,54,3,656,8,9999,65,3,4,77...; 
5,34,3,6,77,4,234,9999.....] 

謹以此成爲:

A = [1,3,4,76,88,3,54,6,33...; 
2,54,3,656,8,9999,65,3,4,77...; 
3,9999,9999,9999,9999...... 
4,9999,9999,9999,9999..... 
5,34,3,6,77,4,234,9999.....] 

一路8760

一些數據丟失的第一個小時。

感謝您的幫助。

+1

歡迎StackOverflow上。建議您發佈可直接使用的示例數據,_as is_。如果可以複製粘貼,則幫助更容易。在這種情況下,每行中相同數量的列將會很好。 –

回答

1

這應該工作:

%% The example matrix: 
A = 
     1  3  4  76  88  3  54  6 
     2  54  3 656  8 9999  65  3 
     5  34  3  6  77  4 234 9999 

B = zeros(8760, size(A,2)); 
B(A(:,1),:) = A; 

B(B(:,1)==0,2:end) = 9999; 
B(:,1) = 1:8760 % (Used 1:5 in my example below) 

B = 
     1  3  4  76  88  3  54  6 
     2  54  3 656  8 9999  65  3 
     3 9999 9999 9999 9999 9999 9999 9999 
     4 9999 9999 9999 9999 9999 9999 9999 
     5  34  3  6  77  4 234 9999 
0

這類似於@ RobertP的答案,但避免了一些步驟和稍快:

B = [ (1:8760).' 9999*ones(8760,size(A,2)-1) ]; 
B(A(:,1),2:end) = A(:,2:end);