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

27 ビュー (過去 30 日間)
Shambhavi Adhikari
Shambhavi Adhikari 2021 年 3 月 9 日
コメント済み: Steven Lord 2021 年 3 月 9 日
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:

回答 (1 件)

Are Mjaavatten
Are Mjaavatten 2021 年 3 月 9 日
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 件のコメント
Stephen23
Stephen23 2021 年 3 月 9 日
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 2021 年 3 月 9 日
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

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeTables についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by