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!