Save results from for loop and array function

3 views (last 30 days)
I created a function that reads a text file that has rows by year and columns with different values, converts it to an array, and finds annual mean values.
I'd like to use a for loop (or any loop) that will create the mean for each year, without me having to copy and paste the function with a new year input value each time.
I would then like to save each iteration into a table or an array, such that each row is for each year and includes multiple/separate columns from the function.
My function works for one year at a time, saving the results into an array. The for loop only saves the last year into a table.
Can you please recommend how to improve the for loop?
load file.txt
for year=2009:2016
Amean = annmean_dmean(year);
Atable = table(year, Amean);
end
function [annmean_year]= annmean_dmean (year)
T = readtable('file.txt');
A =table2array(T);
id = A(:,1)==year;
dmean_year = A(id,:);
annmean_year = mean(dmean_year(:,3:end),'omitnan');
end

Accepted Answer

Andrei Bobrov
Andrei Bobrov on 26 Oct 2017
Edited: Andrei Bobrov on 26 Oct 2017
T = readtable('file.txt');
A = varfun(@(x)mean(x,'omitnan'),T,'Group',1)
out = A(:,[1,4:end]);

More Answers (0)

Categories

Find more on MATLAB in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!