Создать новый список переменных из старого списка переменных: новые имена и значения (Matlab) - PullRequest
0 голосов
/ 23 апреля 2020

Для каждой переменной в списке переменных я хотел бы отредактировать имя переменной и изменить ее значения. В частности, что я должен сделать, для каждой переменной:

% old variable
Var = [2 3 4];  

% desired output
Var_new = [var ones(1,3)];

-> Var_new = [2 3 4 1 1 1]

Это способ, которым я делаю это сейчас, но так как у меня много переменных, я хотел бы сделать это в al oop, но я не могу понять, как.

Редактировать : переменные в списке не следуйте любой схеме. В рабочей области есть другие переменные, которые я не собираюсь включать в эту операцию.

1 Ответ

2 голосов
/ 23 апреля 2020

Немного хакерский, но предполагая, что ваши переменные следуют фиксированному шаблону, вы можете сделать следующее:

var1 = [2 3 4];
var2 = [4 5 6];
all_vars = whos('var*');

for i = 1:length(all_vars)
    evalin('base',[all_vars(i).name '_new=[evalin(''base'',all_vars(i).name) ones(1,3)]'])
end

var1_new =

     2     3     4     1     1     1


var2_new =

     4     5     6     1     1     1

Если у вас нет фиксированного шаблона, вам придется вручную создать список (например, массив ячеек):

var1 = [2 3 4];
var2 = [4 5 6];
all_vars = {'var1','var2'};

for i = 1:length(all_vars)
    evalin('base',[all_vars{i} '_new=[evalin(''base'',all_vars{i}) ones(1,3)]'])
end

Кстати, я использую имена var1 и var2 только для демонстрационных целей. Это обычно считается плохой практикой .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...