Average multiple vectors with different lengths

15 次查看(过去 30 天)
I performed 3 measurements with different lengths of time. I would like to average those measurements without losing data. The measurements are stored in separate excel files which I can load each iteration of a for loop.

采纳的回答

Rik
Rik 2020-5-25
Pad the shorter vectors with NaN and use the 'omitnan' flag in mean.
  2 个评论
Rik
Rik 2020-5-25
Sure:
A=[1 2 5];
B=[4 3];
C=[4 3 2 1 5];
alldata={A,B,C};%put them all in a cell for convenience
maxlen=max(cellfun('prodofsize',alldata));
for n=1:numel(alldata)
current_elem=numel(alldata{n});
if current_elem<maxlen
alldata{n}((current_elem+1):maxlen)=NaN;
end
end
%show the result of this loop
clc
[A,B,C]=deal(alldata{:})
mean([A;B;C],'omitnan')
%or better:
extradim=1+ndims(alldata{1});
bigarray=cat(extradim,alldata{:});
mean(bigarray,extradim,'omitnan')

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Data Import from MATLAB 的更多信息

产品


版本

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by