Is it possible to convert a cell array into individual variables on workspace?

15 vues (au cours des 30 derniers jours)
Shambhavi Adhikari
Shambhavi Adhikari le 9 Mar 2021
Commenté : Steven Lord le 9 Mar 2021
I have a 4x2 cell array of names and their values. I am trying to save them as a separate variable on workspace so that i can use them in my code. Is it possible to convert them into individual arrays?
Example: My cell array is
>> y(:,1)={'force';'mass';'distance';'gravity';'Unit'};
>> y(:,2)={'10';'0.5';'5';'10','N'};
% Desired Output:

Réponses (1)

Are Mjaavatten
Are Mjaavatten le 9 Mar 2021
Dynamically creating variables in Matlab is not encouraged. See Stephen Cobeldick's tutorial entry.
A better idea is to create a struct:
for i = 1:size(y,1)
s.(y{i,1}) = y{i,2};
end
  2 commentaires
Stephen23
Stephen23 le 9 Mar 2021
y = {'force';'mass';'distance';'gravity';'Unit'};
y(:,2) = {'10';'0.5';'5';'10';'N'};
either
S = cell2struct(y(:,2),y(:,1))
S = struct with fields:
force: '10' mass: '0.5' distance: '5' gravity: '10' Unit: 'N'
or
y = y.';
S = struct(y{:})
S = struct with fields:
force: '10' mass: '0.5' distance: '5' gravity: '10' Unit: 'N'
Steven Lord
Steven Lord le 9 Mar 2021
y = {'force';'mass';'distance';'gravity';'Unit'};
y(:,2) = {10;0.5;5;10;'N'};
T =cell2table(y(:, 2).', 'VariableNames', y(:, 1))
T = 1x5 table
force mass distance gravity Unit _____ ____ ________ _______ _____ 10 0.5 5 10 {'N'}
T.distance
ans = 5
T{1, 'gravity'}
ans = 10
You could also set the RowNames of the table so you can do things like:
T.Properties.RowNames = {'trial1'}
T = 1x5 table
force mass distance gravity Unit _____ ____ ________ _______ _____ trial1 10 0.5 5 10 {'N'}
T{'trial1', 'force'}
ans = 10

Connectez-vous pour commenter.

Catégories

En savoir plus sur Data Type Conversion dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by