Как автоматически изменять имена переменных с учетом нового имени входного файла

#matlab

Вопрос:

Я импортирую данные из .mat файла, а затем извлекаю из него определенные сигналы, и я называю эти данные data . data представляет собой структуру 1×1 с 1 полем, FT_est_X , где X-конкретный прогон, из которого я собрал образцы. Вот фрагмент кода о том, как я это делаю.

 data = load('site_data_all_2.mat');
t  = data.FT_est_2.time;
% estimated data
Fx = data.FT_est_2.signals(1).values;
Fy = data.FT_est_2.signals(2).values;
Fz = data.FT_est_2.signals(3).values;
Mx = data.FT_est_2.signals(4).values;
My = data.FT_est_2.signals(5).values;
Mz = data.FT_est_2.signals(6).values;
 

Итак, вы можете видеть, что эти данные были собраны во время выполнения 2. Теперь, допустим, я хочу загрузить файл с именем site_data_all_3.mat (запуск 3). Происходит то, что все приведенные ниже данные %estimated data меняют свое имя-все остается прежним, за исключением 2 того, что становится a 3 (например, Fx будет Fx = data.FT_est_3.signals(1).values; . В настоящее время я должен вручную ввести значение 3 для каждой переменной; может ли кто-нибудь сказать мне, как я могу изменить только имя файла, и оно автоматически изменит имена переменных для меня? По сути, я просто хочу, чтобы так и было Fx = data.name_of_struct_field.signals(1).values .

Спасибо!

Ответ №1:

Вы могли бы построить строку каким-либо программным способом (возможно, с помощью переменной итерации), но вот простой ответ: определить имя поля как строку и просто использовать его. На следующей итерации обновите переменную fieldname и повторите.

 fieldname = 'FT_est_2';
Fx = data.(fieldname).signals(1).values;