How to loop through variable names and to save them on one file?
11 次查看(过去 30 天)
显示 更早的评论
Hi, I have written this loop which works fine, however I want to perform this for certain variables in the data_measured csv file. Currently, this loop performs well for the WD__Avr variable. Hence, I would like to define the variable = x before the loop and just replace it with "t.'variable" within the loop. Any suggestion?
Thanks for your help!
for i = 1:height(unique(data_timesteps.Date))
ind_dt = find(data_timesteps.Date == dates(i));
t = table(data_timesteps.Time(ind_dt), zeros(sum(data_timesteps.Date == dates(i)),1));
header={'Time','WD_Avr'};
t.Properties.VariableNames = header;
for j = 1:(sum(data_timesteps.Date == dates(i)))
if j == 1
ind_time = find(data_measured.Time <= data_timesteps.Time(j) & data_measured.Date == dates(i));
ind_time = ind_time(end-10+1:end);
x = mean(data_measured.WD__Avr(ind_time));
t.WD_Avr(j) = x;
data_timesteps.WD(ind_dt) = t.WD_Avr;
else
ind_time = find(data_measured.Time <= data_timesteps.Time(j) & data_measured.Time > data_timesteps.Time(j-1) & data_measured.Date == dates(i));
x = mean(data_measured.WD__Avr(ind_time));
t.WD_Avr(j) = x;
data_timesteps.WD(ind_dt) = t.WD_Avr;
end
end
end
2 个评论
采纳的回答
Jeff Miller
2021-8-5
You can use strings for variable names like this:
a = 'WD__Avr';
for....
[...]
x = mean(data_measured.(a)(ind_time)); % note parentheses around 'a'
[...]
...end
You might make a cell array with the different strings you want for 'a' and then loop through assigned each one to 'a' to process the different variables.
更多回答(1 个)
Sulaymon Eshkabilov
2021-8-4
It looks that will require another loop outside the main loop, something like this one, e.g.:
for i = 1:height(unique(data_timesteps.Date))
ind_dt = find(data_timesteps.Date == dates(i));
x.Time(i) = data_timesteps.Time(ind_dt);
end
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!