0

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

使用 container.Map/subsref 时出错

此容器中不存在指定的密钥。

testMap 中的错误(第 40 行)

strSubtractHour2=weatherFrontMap(subtractHour2);

4

1 回答 1

1

浮点数不太适合地图容器,因为用浮点数测试相等性是有风险的(由于浮点数的存储不精确)。

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

于 2013-02-25T03:12:35.803 回答