0

次のコードは、MATLABコンテナマップのキーとしてMatlabsシリアル日付番号を使用しています。キータイプはdoubleです。これは正しいです?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

13

2013年2月12日12:00:00

12

2013年2月12日11:00:00

container.Map/subsrefの使用中にエラーが発生しました

指定されたキーはこのコンテナーに存在しません。

testMapのエラー(40行目)

strSubtractHour2 = weatherFrontMap(subtractHour2);

4

1 に答える 1

1

浮動小数点数はマップ コンテナーには適していません。浮動小数点数との等価性をテストするのはリスクが高いためです (浮動小数点数の格納が不正確なため)。

精度を制御できる日付/時刻の文字列表現を使用した場合、このコードはより適切に機能します。

于 2013-02-25T03:12:35.803 に答える