Ответ 1
>> foo = 3.14; name = 'foo'; eval(name)
foo =
3.1400
Вышеупомянутые работы в MATLAB, и в документации Scilab говорится, что у нее также есть функция eval
. Не уверен, правильно ли я вас понял.
Мне нужно загрузить экспериментальные данные в scicoslab, (довольно плохо спроектированный) клон- форк scilab, который поддерживает графическое моделирование. Документация в Интернете довольно скудная, но она довольно похожа на scilab и октаву.
Данные, которые мне нужно обработать, содержатся в определенном количестве текстовых файлов: Data_005
, Data_010
,…, Data_100
. Каждый из них может быть загружен с помощью флага -ascii для команды loadmatfile
.
Проблема заключается в том, что loadmatfile("foo", "-ascii")
загружает файл foo.mat
в переменную с именем foo
. Чтобы циклически обрабатывать файлы данных, мне нужно сделать что-то вроде:
for i = [5:5:100]
name = sprintf("Data_%02d", i);
loadmatfile(name, "-ascii");
x = read_var_from_name(name);
do_something(x);
end
где я ищу встроенное read_var_from_name
которое позволило бы мне получить доступ к внутренней таблице символов по строке.
Вы знаете, существует ли подобная функция?
Заметки:
>> foo = 3.14; name = 'foo'; eval(name)
foo =
3.1400
Вышеупомянутые работы в MATLAB, и в документации Scilab говорится, что у нее также есть функция eval
. Не уверен, правильно ли я вас понял.
@arne.b имеет хороший ответ.
В вашем случае вы также можете сделать это в matlab:
a=load('filename.mat')
x=a.('variable_name')
давайте пройдемся по вашим пунктам один за другим:
eval
которая в основном делает то, что вы хотите. Однако эта функция не рекомендуется в пользу evstr
. Есть также функция execstr
которую стоит изучить.loadmatfile
, насколько я понял, "пытается" загрузить переменные, определенные в файле MATLAB .mat
(собственный табличный формат MATLAB), в рабочее пространство Scilab. Например, если есть переменная foo
она "попытается" создать переменную foo
и загрузить ее значение из сценария MATLAB. Проверьте этот пример. Я бы создал переменную x(i) = foo
в цикле for. опять твой вопрос не совсем понятен..mat
.