??? Undefined function or method 'isnan' for input arguments of type 'struct'.

9 ビュー (過去 30 日間)
Rory Staunton
Rory Staunton 2011 年 5 月 11 日
I have a structure array, 'AMap'. The elements of 'AMap', which are called 'fitresults', are most often structre arrays themselves, but sometimes they are supposed to be equal to NaN, such as can be seen and verified in the command window:
>> AMap(8,1).fitresults
ans =
NaN
>> isnan(AMap(8,1).fitresults)
ans =
1
But when I try to use 'isnan' in an if statement in a forloop in a function,
if(isnan(AMap(i,j).fitresults)==0)
I get the error:
??? Undefined function or method 'isnan' for input arguments of type 'struct'.
but as you can see 'isnan' must be defined for structs since I can use isnan on a struct in the command window. What gives? How can I get around this?
thanks in advance,
Rory

採用された回答

Walter Roberson
Walter Roberson 2011 年 5 月 11 日
You only tested isnan() for the case where AMap(8,1).fitresults is NaN, and did not test it for the case where it is a structure instead.
I suggest that you change your test to
if isstruct(AMap(i,j).fitresults)

その他の回答 (1 件)

Rory Staunton
Rory Staunton 2011 年 5 月 11 日
When the value of AMap(i,j).fitresults is NaN, then isnan works, because fitresults is not a struct.
When the value of AMap(i,j).fitresults is a struct array, then 'isnan' complains, because it is a struct, and 'isnan' can't work on structs.
My solution is to use 'isstruct' instead. It will give 0 when fitresults = NaN, and 1 when it is a struct.
For my purposes this will suffice...

カテゴリ

Help Center および File ExchangeCharacters and Strings についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by