以下代码使用Matlabs序列日期编号作为matlabs容器图中的键。关键类型是双倍。它是否正确? Matlabs序列号可以用作密钥吗?
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-Feb-2013 13:00:00
13
12-Feb-2013 12:00:00
12
12-Feb-2013 11:00:00
使用containers.Map/subsref
时出错此容器中不存在指定的密钥。
testMap中的错误(第40行)
strSubtractHour2 = weatherFrontMap(subtractHour2);
答案 0 :(得分:1)
浮点数不适合地图容器,因为使用浮点数测试相等是有风险的(由于浮点数的存储不精确)。
如果您使用可以控制精度的日期/时间的字符串表示,则此代码可以更好地工作。