MATLAB: Averaging mutiple structures to get a single mean waveform

averagingMATLAB

Hi,
I have a structure called Results.
Within this structure I have x amount of fields. Each field having a 1xn structure. I would then like to make an average waveform from the 1xn structure for each field.
Conceptually, this is a very basic thing to do, but struggling to apply it.
Many thanks,

Best Answer

  • The following code might help you:
    clear all
    a(1).waveforms = rand(101,1);
    a(2).waveforms = rand(101,1);
    a(3).waveforms = rand(101,1);
    Results.a = a;
    Results.b = a;
    Results.c = a;
    fieldNames = fieldnames(Results);
    for i = 1:numel(fieldNames)
    res = arrayfun(@(x)x.waveforms,Results.(fieldNames{i}),'UniformOutput',false);
    resMat = cell2mat(res);
    avgWaveforms.(fieldNames{i}) = mean(resMat,2);
    end
    avgWaveforms
    Refer to arrayfun & mean for more information and related examples.