Accessing multiple columns in cell array
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi,
I need to calculate the mean of 5 measurements. The 5 measurements are presented in a 5*1 cell array. The variable is called Data.
Thus, I need the mean of:
Data{1, 1}(:,end)
Data{2, 1}(:,end)
Data{3, 1}(:,end)
Data{4, 1}(:,end)
Data{5, 1}(:,end)
How do I acces all 5 columns at once?
Thanks in advance.
-Lasse
0 Kommentare
Antworten (3)
Scott MacKenzie
am 9 Jun. 2021
Bearbeitet: Scott MacKenzie
am 9 Jun. 2021
You need to retrieve the elements in their underlying data type (hence the use of braces) and concatenate the values using brackets:
mean([Data{:,1}])
If indeed thare are only 5 values (measurements), then you don't need ",1". Just use
mean([Data{:}])
0 Kommentare
Stephen23
am 9 Jun. 2021
Fake data:
Data = arrayfun(@(n)randi(9,2,3),1:5,'uni',0).'; % fake data
Data{:}
Method one:
M = mean(cat(3,Data{:}),3);
M = M(:,end)
Method two:
M = mean(cell2mat(reshape(Data,1,1,[])),3);
M = M(:,end)
Method three:
M = mean(cell2mat(cellfun(@(m)m(:,end),Data.','uni',0)),2)
Method four:
M = mean(cell2mat(arrayfun(@(n)Data{n}(:,end),1:numel(Data),'uni',0)),2)
0 Kommentare
Siehe auch
Kategorien
Mehr zu Logical finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!