Save results from for loop and array function

3 vues (au cours des 30 derniers jours)
kathy
kathy le 26 Oct 2017
Commenté : kathy le 26 Oct 2017
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
  2 commentaires
Andrei Bobrov
Andrei Bobrov le 26 Oct 2017
Please attach your file.txt.
kathy
kathy le 26 Oct 2017
This is a condensed version.

Connectez-vous pour commenter.

Réponse acceptée

Andrei Bobrov
Andrei Bobrov le 26 Oct 2017
Modifié(e) : Andrei Bobrov le 26 Oct 2017
T = readtable('file.txt');
A = varfun(@(x)mean(x,'omitnan'),T,'Group',1)
out = A(:,[1,4:end]);
  1 commentaire
kathy
kathy le 26 Oct 2017
That's amazing! Thanks!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur MATLAB dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by