I have this table imported from a csv file after using
datos = readtable(filename)
fechaDef = datos{:,{'FECHA_DEF'}}
fechaDef =
{'9999-99-99'}
{'6/26/2020' }
{'9999-99-99'}
{'9999-99-99'}
{'9999-99-99'}
....
And i want to convert it to datetime format, i want to have the '9999-99-99' as NaT
What I'm doing is
fechaDef = datos{:,{'FECHA_DEF'}} %NaT if not a Datetime
fechaDef = table2array(fechaDef);
fechaDef = datetime(fechaDef,'InputFormat','MM/dd/yyyy')
I can write those commands and execute them successully at the command window.
But when writing them in a script i get the following error:
Can you tell me what am I doing wrong?
Thanks in advance!

3 件のコメント

dpb
dpb 2020 年 7 月 15 日
Not without a sample test case that illustrates the problem can run here -- the above code snippet by itself works in a script the same as the command line
>> testit
fechadef =
5×1 datetime array
NaT
26-Jun-2020
NaT
NaT
NaT
>>
>> type testit
fechaDef = [...
{'9999-99-99'}
{'6/26/2020' }
{'9999-99-99'}
{'9999-99-99'}
{'9999-99-99'}];
fechadef=datetime(fechaDef,'InputFormat','MM/dd/yyyy')
>>
There's something else gone wrong in the script before there that is the cause of the problem but we can't see or run the script to be able to tell what that might be.
Pull out the pieces and make test code by adding more and more until you find the culprit...
DVR
DVR 2020 年 7 月 15 日
Thanks for your fast answer dpb.
Attached you can find my script, in fact i'm getting a warning but dont know if that is related with the error.
Also attached is the .csv file i'm using.
Walter Roberson
Walter Roberson 2020 年 7 月 15 日
data = cat(1, image_patches,labels);
That code is overwriting all of data each iteration.
It looks to me as if data will not be a vector, but I do not seem to be able to locate any hellopatches() function so I cannot tell what shape it will be. As you are not doing imresize() I also cannot be sure that all of the images are the same size, so I cannot be sure that data will be the same size for each iteration. Under the circumstances you should be considering saving into a cell array.
Note: please do not post the same query multiple times. I found at least 9 copies of your query :(

サインインしてコメントする。

 採用された回答

Steven Lord
Steven Lord 2020 年 7 月 15 日

1 投票

fechaDef = ...
[{'9999-99-99'};
{'6/26/2020' };
{'9999-99-99'};
{'9999-99-99'};
{'9999-99-99'}]
fechaDef2 = replace(fechaDef, '9999-99-99', 'NaT')
dt = datetime(fechaDef2, 'InputFormat', 'MM/dd/yyyy')

2 件のコメント

DVR
DVR 2020 年 7 月 15 日
Absolutetly right, replace was the function i was missing, thank you Steven!
dpb
dpb 2020 年 7 月 15 日
So what's the difference that DVR was finding, Steven?
Why isn't datetime returning NaT on its own (presuming it really is failing)?
That seems like retrogression if is newly-introduced behavior since R2019b which works as expected here, anyways.
I was more expecting it to barf on the "MM" format string with a '6/26/2020' datestring but it seems ok with that now. My recollection is that would fail in earlier releases but I didn't go back to try to test.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeData Type Conversion についてさらに検索

製品

リリース

R2019b

質問済み:

DVR
2020 年 7 月 15 日

コメント済み:

2020 年 7 月 15 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by