Grouping elements in an array?
7 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
bio lim
le 2 Juin 2015
Commenté : Azzi Abdelmalek
le 2 Juin 2015
Hello. I have a 1 x 46 struct array 'data' with two fields, 'Altitude' and 'Velocity'. Each array has different sizes but the corresponding two arrays for the two fields have same sizes. For example, when I type in:
counts = array(@(x) numel(x.Altitude), data)
counts =
Columns 1 through 19
100 335 104 74 294 101 0 ... until the column goes 46.
What I am trying to do is to group the elements of each arrays in 'Altitude' seven by seven and find the mean.Then, find the mean of the corresponding the elements in the 'Velocity' field. Then I would like to compare the each mean of the 'Altitude' arrays, and plot it.
Could anyone help me with this? Any help is greatly appreciated as I am clueless here. Thank you. The code I have written so far is:
for n = 1 : length(data)
interval_number = floor(length(data(n).Altitude)/7);
t = 0;
for k = 1 : interval_number
s1(n).a(k) = mean(data(n).Altitude(1+t:7+t));
s1(n).b(k) = mean((data(n).Velocity(1+t:7+t)));
t = t + 7;
end
end
0 commentaires
Réponse acceptée
Andrei Bobrov
le 2 Juin 2015
Modifié(e) : Andrei Bobrov
le 2 Juin 2015
x = struct2cell(data);
out = cellfun(@(y)nanmean(reshape([y,nan(1,mod(-numel(y,7))],7,...
[])),squeeze(x),'un',0);
0 commentaires
Plus de réponses (1)
Azzi Abdelmalek
le 2 Juin 2015
Modifié(e) : Azzi Abdelmalek
le 2 Juin 2015
v=struct('Altitude',num2cell(1:46),'Velocity',num2cell(randi(9,1,46)))
ii=0;
m=numel(v)
for k=1:7:46
ii=ii+1
k1=k
k2=min(m,k+6)
out(ii).Altitude=mean([v(k1:k2).Altitude])
out(ii).Velocity=mean([v(k1:k2).Velocity])
end
2 commentaires
Voir également
Catégories
En savoir plus sur Cell Arrays dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!