以下代码使用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)
此打印:
2013年2月12日13:00:00
十三
2013年2月12日12:00:00
十二
2013年2月12日11:00:00
使用容器时出错。映射/子引用
指定的密钥不在此容器中。
测试地图(第40行)错误
strSubtractHour2=weatherFrontMap(减法Hour2);
浮点数字不太适合映射容器,因为用浮点数字测试等式是有风险的(由于浮点数字的存储不精确)。
如果使用可以控制精度的日期/时间的字符串表示,则此代码会更好地工作。