When i covert a structure to cell array, my fieldNames disappear
6 ビュー (過去 30 日間)
古いコメントを表示
I am trying to convert a structure to a cell array, when i do that, i am not able to see field on my new cell array, i only see values. Is there a way to have both field and values on the cell array?
0 件のコメント
回答 (3 件)
Fangjun Jiang
2021 年 3 月 10 日
There is no meta data text info for cell array. Use struct2table() to convert structure to table.
2 件のコメント
ANKUR KUMAR
2021 年 3 月 10 日
"Is there a way to have both field and values on the cell array?"
Let us create a sample structure
S.x = linspace(0,4*pi);
S.y = cos(S.x);
You can use fieldnames and struct2cell to extract the values:
name=fieldnames(S);
value=struct2cell(S);
0 件のコメント
Jorg Woehl
2021 年 3 月 10 日
編集済み: Jorg Woehl
2021 年 3 月 11 日
Shambhavi, you can use fieldnames to extract the fieldnames from your structure and add it to the end of your new cell array. For example, taking this 1-by-2 structure array from the MATLAB documentation:
% sample structure
field1 = 'f1'; value1 = zeros(1,10);
field2 = 'f2'; value2 = {'a', 'b'};
field3 = 'f3'; value3 = {pi, pi.^2};
field4 = 'f4'; value4 = {'fourth'};
s = struct(field1,value1,field2,value2,field3,value3,field4,value4);
% write data from structure to cell array
sCell = struct2cell(s);
% add fieldnames to cell array
sCell(:,:,end+1) = fieldnames(s);
sCell(:,:,1) to sCell(:,:,end-1) now contain your data, while sCell(:,:,end) contains your fieldnames.
If you prefer to have the fieldnames listed first, in sCell(:,:,1), followed by your data in sCell(:,:,2) to sCell(:,:,end), issue the following command after the above:
sCell = circshift(sCell,1,3);
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Structures についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!