我有两个包含日期编号的向量A
和B
。理论上,B
中的所有系数也应包含在A
中。不幸的是,这种情况并非如此。我的理论证明用A
向量中的下一个日期编号替换所有不对应的日期编号,我想编写一个脚本。
更具体地说:两个向量都包含金融交易的日期。向量A
包含所检查时间段的所有交易日,因此B
中的所有交易日期也应包含在A
中,因为交易不能在非交易日进行。 B
中的条目不在A
的情况下我假设交易被错误地报告在非交易日发生,因此我希望用下一个最高的数字替换这些日期。包含在A
。
举一个例子,我想转此:
A = [2;3;4;7]
B = [2;3;4;5;6;7]
进入这个:
A = [2;3;4;7]
B = [2;3;4;7;7;7]
因为B(4:5)
未包含A
,所以5
被修改了。该脚本必须标识A
中未包含5+i
,然后检查A
中是否包含7
,直到此评估结果为真(这种情况就是这样)在B
)。此时系数将插入A
以替换旧日期。
请注意,此问题与this earlier question密切相关;但是,这个问题并不是确定工作日。相反,我想接受我的一个日期向量(A
)作为权威(即充分代表交易日,包括国家法定假日),并以{{1}}向量上的不符合条目的替换为基础而不是彭博功能。
答案 0 :(得分:2)
此解决方案假定a
和b
已经排序。如果没有,则只需将其替换为sort(a)
和sort(b)
。
a = [ 2; 3; 4; 7 ];
b = [ 2; 3; 4; 5; 6; 7 ];
% Check each element in b
for k = 1: length(b)
% If this element of b is not contained in a
if (all(a(:) ~= b(k)))
% Replace with the next element in a that is greater than b(k)
b(k) = a(find(a(:) > b(k), 1, 'first'));
end
end
答案 1 :(得分:1)