Save results from for loop and array function

3 Ansichten (letzte 30 Tage)
kathy
kathy am 26 Okt. 2017
Kommentiert: kathy am 26 Okt. 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 Kommentare
Andrei Bobrov
Andrei Bobrov am 26 Okt. 2017
Please attach your file.txt.
kathy
kathy am 26 Okt. 2017
This is a condensed version.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

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

Weitere Antworten (0)

Kategorien

Mehr zu MATLAB finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by