Iterating through a structure
古いコメントを表示
I am trying to create a mask using by 168x1 struct but whenever i run the code i get this error - Expected one output from a curly brace or dot indexing expression, but there were 168 results.
Is there a way i can iterate through the structure and create a mask out of these fields.
Any help is appreciated
[x,y] = pixcenters(R);
[X,Y] = meshgrid(x,y);
names = fieldnames(S);
no_afr_stru = cell2struct(filt_nonaf_country,names,1);
fn = fieldnames(no_afr_stru);
rx = no_afr_stru.X(1:end-1);
ry = no_afr_stru.Y(1:end-1);
mask = inpolygon(X,Y,rx,ry);
2 件のコメント
Ive J
2020 年 12 月 13 日
Please provide more details so that everyone can reproduce your error. For starters, what are X, Y, rx and ry? can you provide an example?
Jordan Coombs
2020 年 12 月 13 日
採用された回答
その他の回答 (1 件)
Try this:
mask = arrayfun(@(x)inpolygon(X, Y, x.X, x.Y), no_afr_stru, 'UniformOutput', false);
2 件のコメント
Rik
2020 年 12 月 13 日
I suspect the goal is to create a single mask, which would be easier with a loop. Also, arrayfun will have an overhead.
Jordan Coombs
2020 年 12 月 13 日
カテゴリ
ヘルプ センター および File Exchange で Loops and Conditional Statements についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!