簡體   English   中英

如何在MATLAB中將隨機分布向量轉換為日期時間對象

[英]How to convert a random distributed vector to datetime object in MATLAB

我有一個向量,該向量的隨機分布值從0到10遞增,例如[1 3 4 9 10]。 如何將這個向量轉換為日期時間對象,其時間值介於11月和12月之間,以使這些數字表示之間的對應時間?

例如,如果x = [1 2 3]並且我想要整個1月的時間段,則根據其相對值,輸出應為[1月1日,1月15日,1月30日]。

例如,如果x = [0 0.5 9 10]並且我們有整個一月,那么0應該映射到一月的第一天,而10映射到一月的最后一天。 0.5將映射到從1月1日到最后一月的0.5 / 10 = 1/20處的日期。 該日期大約是一月半的30 * 1/20 = 1天。 現在,這9個位置將以同樣的方式位於30天的9/10位。 那是30 * 9/10 =27。那是一月的27日。 因此,輸出應為日期時間格式的[1月1日,1月1.5日,1月27日,1月30日]。

您可以使用datenum和一些基本的算法來得出以下解決方案:

formatIn = 'dd.mm.yyyy';
d1 = '01.01.2017'; % user input, should be the earlier date
d2 = '31.01.2017'; % user input, should be the later date
x = [0 0.5 5 7 10]; % user input

d1 = datenum(d1,formatIn);
d2 = datenum(d2,formatIn);

daysAfter_d1 = d2-d1;
x = x/max(x);
addDays = round(daysAfter_d1*x);
interpolatedDates = d1 + addDays;
datestr(interpolatedDates,formatIn)

ans =

01.01.2017
03.01.2017
16.01.2017
22.01.2017
31.01.2017

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM