Создайте структуру с ячейкой имен переменных и ячейкой двойных массивов - PullRequest
1 голос
/ 10 апреля 2020

enter image description here

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

s = struct;

s.var1.Time = 1st column of 1st val_vars;
s.var1.Data = 2nd column of 1st val_vars;

s.var2.Time = 1st column of 2nd val_vars;
s.var2.Data = 2nd column of 2nd val_vars;

...

Ответы [ 2 ]

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

, если вы хотите хорошую скорость, попробуйте следующий векторизованный код:

%define sample data
name_vars={'var1','var2','var3','var4'};
val_vars={rand(100,2),rand(100,2),rand(100,2),rand(100,2)};

a=arrayfun(@(x) struct('Time',val_vars{x}(:,1),'Data',val_vars{x}(:,2)),1:length(name_vars),'uni',false);
b=cell2struct(a,name_vars,2)
1 голос
/ 10 апреля 2020

Вот простое решение. Однако, если вы имеете дело с большим набором данных, где у вас много var с, этот подход не эффективен .

for i = 1:4
  eval(['s.' name_vars{i} '.Time = val_vars{' num2str(i) '}(:,1);']);
  eval(['s.' name_vars{i} '.Data = val_vars{' num2str(i) '}(:,2);']);
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...