How to loop through variable names and to save them on one file?
조회 수: 6 (최근 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!