Matlab容器.使用SerialDateNumber映射奇怪的密钥行为



以下代码使用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);

浮点数字不太适合映射容器,因为用浮点数字测试等式是有风险的(由于浮点数字的存储不精确)。

如果使用可以控制精度的日期/时间的字符串表示,则此代码会更好地工作。

相关内容

  • 没有找到相关文章

最新更新