下面的代码使用Matlabs Serial Date Number作为matlabs容器映射中的键。密钥类型为double。这是正确的吗?Matlabs Serial Date Number可以用作密钥吗?
currDateTime='2013-02-12 11:00';
dateNum=datenum(currDateTime);
keySet = {dateNum};
currentDateNum=datestr(dateNum);
valueSet = {currentDateNum} ;
weatherFrontMap = containers.Map(keySet,valueSet);
weatherFrontMap(dateNum)='eleven';
currDateTime='2013-02-12 12:00';
dateNum=datenum(currDateTime);
weatherFrontMap(dateNum)='twelve';
currDateTime='2013-02-12 13:00';
dateNum=datenum(currDateTime);
weatherFrontMap(dateNum)='thirteen';
currentDateNum=datestr(dateNum);
disp (currentDateNum)
str=weatherFrontMap(dateNum);
disp(str)
subtractHour=addtodate(dateNum,-1,'hour');
currentDateNum=datestr(subtractHour);
disp (currentDateNum)
strSubtractHour=weatherFrontMap(subtractHour);
disp(strSubtractHour)
subtractHour2=addtodate(dateNum,-2,'hour');
currentDateNum=datestr(subtractHour2);
disp (currentDateNum)
strSubtractHour2=weatherFrontMap(subtractHour2);
disp(strSubtractHour2)这将打印:
12-2月-2013 13:00:00
十三
12-Feb-2013 12:00:00
十二
12-2月-2013 11:00:00
使用容器时出错。/subsref
此容器中不存在指定的密钥。
testMap中的错误(第40行)
strSubtractHour2=weatherFrontMap(subtractHour2);
发布于 2013-02-25 11:12:36
浮点数并不适合地图容器,因为测试浮点数的相等性是有风险的(因为浮点数的存储不精确)。
如果您使用日期/时间的字符串表示形式,并且可以控制精度,则此代码会工作得更好。
https://stackoverflow.com/questions/15056848
复制相似问题