check if numbers exist in a structure field
10 次查看(过去 30 天)
显示 更早的评论
I have a set of values in a vector that I would like to loop over to check whether they exist in a structure field--is there any easy way to do this without causing an index error. I want to check whether all of the values in j,
where j=[1:79 356:366], exist in my structure files(1,1).day(j).median.
I was trying to loop over the elements of j and set restrictions via if then statements. The cases I would like to test but am not sure how to test are:
-whether the values exist in the structure field. If they exist I would like to calculate a value
-whether they are empty (no data) I would like to skip them and continue looping through the rest of the values of j
-whether they exist in the structure field at all--skip and continue looping through the rest of the values of j
-If 80% of the numbers exist I would like to calculate something as well.
I've tried a slew of things but keep getting the indexing error. Can anyone point me to how I would set up this logic?
2 个评论
Jos (10584)
2014-1-10
So, you have a situation like this
files.day(1).median = 1
files.day(3).median = 3
files.day(4).median = 3
with files.day(2).median being therefore empty, and
j = [1 2 4]
A = [files.day(j).median]
produces the wrong result in A? because you want to be something like [1 NaN 4] ?
回答(1 个)
Simon
2014-1-10
Hi!
You may write
m = [files(1,1).day(:).median];
to get a vector of all values in 'day'. Then you can use ismember/intersect/setdiff/... to test which values exist.
3 个评论
Image Analyst
2014-1-10
You can use fieldnames to determine if a member of a structure, such as day or median above, actually exist.
fieldnames(files)
fieldnames(files.day)
fieldnames(files.day.median)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Structures 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!