我有一个第一列“一年中的小时”的数组,其他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
第一个小时缺少部分数据。
感谢您的帮助。
答案 0 :(得分: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
答案 1 :(得分:0)
这类似于@ RobertP的答案,但是避免了一些步骤并且稍快一些:
B = [ (1:8760).' 9999*ones(8760,size(A,2)-1) ];
B(A(:,1),2:end) = A(:,2:end);