Calculations for arrays inside an array
1 次查看(过去 30 天)
显示 更早的评论
I have a 1x1 structure with 6 fields. In each field is a cell array comprised of various lengths x 8 columns. I would like to write a loop that will perform a specific calculation for EACH cell array i.e.) subtract column 5 from 4, then compute the average.
I can't seem to get the loop going, I keep getting errors such as "Cell contents reference from a non-cell array object. ".
Any suggestions are greatly appreciated.
1 个评论
Andrei Bobrov
2018-8-29
Where is your example? Please attach an example of your structure, as a mat-file.
回答(1 个)
dpb
2018-8-29
编辑:dpb
2018-8-29
Making the array content cell arrays complicates dereferencing but something like
structfun(@(c) mean(c{:}(:,5)-c{:}(:,4)),s)
works for specific column indices.
The above assumes the structure is like
>> s.f1={rand(3,4)};
>> s.f2={rand(5,4)}
s =
struct with fields:
f1: {[3×4 double]}
f2: {[3×4 double]}
>>
There's no reason that the struct needs the arrays as cell arrays, though, each field content is independent so you can have differing-sized double arrays and use direct addressing --
>> s.f1=rand(3,4);
>> s.f2=rand(5,4)
s =
struct with fields:
f1: [3×4 double]
f2: [5×4 double]
>>
Then, it's just
structfun(@(c) mean(c(:,5)-c(:,4)),s)
as structfun pass each field in turn which is now just a double array instead of cell containing a double array.
Of course, if your structure is some other perturbation, we'll need to know what that is to know how to dereference it properly.
另请参阅
类别
在 Help Center 和 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!