Average multiple vectors with different lengths

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.

 采纳的回答

Pad the shorter vectors with NaN and use the 'omitnan' flag in mean.

2 个评论

Hi Rik, can you give a short example of this?
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 个)

类别

在 帮助中心 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息

产品

版本

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by