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

一些数据丢失了第一个小时。

谢谢您的帮助。

4

2 回答 2

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
于 2013-11-01T15:03:53.287 回答
0

这类似于@RobertP 的答案,但避免了一些步骤并且速度稍快:

B = [ (1:8760).' 9999*ones(8760,size(A,2)-1) ];
B(A(:,1),2:end) = A(:,2:end);
于 2013-11-01T16:17:09.883 回答