check if numbers exist in a structure field
조회 수: 5 (최근 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!