Внутри цикла
for req = {"del_1", "del_2", "del_3"}
req
получает в качестве значения каждую из ячеек массива ячеек, а не содержимое ячеек (странное проектное решение, IMO, но так оно и работает)).Таким образом, req={"del_1"}
в первой итерации.Сама строка затем может быть получена с помощью req{1}
.Таким образом, все, что вам нужно изменить, это:
request = req{1};
Однако я бы реализовал это по-другому, например:
function myfunction(request, tarr)
% long calculation producing many variable including aa, bb, cc.
aa = 2 * tarr;
bb = 3 * tarr;
cc = 4 * tarr;
% collecting variables of interest: aa, bb, cc and save it to a file.
result_matrix = [aa bb cc];
dlmwrite (sprintf('file_result_%s.csv', request), result_matrix);
end
myfunction("del_1", 11)
myfunction("del_2", 22)
myfunction("del_3", 33)
Я думаю, это дает более четкое представление о том, что вына самом деле, код менее сложен.
Обратите внимание, что в Octave ["del_1" "del_2" "del_3"]
оценивается как "del_1del_2del_3"
.То есть вы соединяете строки.В MATLAB это не так, но Octave не знает тип string
и использует "
так же, как '
, для создания char
массивов.