how can we construct different cells inside cell-array?

hi there,
I have a cell array of 1x6 size; 6 cell in one rows which contains a data set. Now, I want to construct a 7th cell in which I wanted to store some information regarding experiment. For that, I need to make different cell inside the 7th cell. for instance:
cell_array {1,7} ={ {Date :}, {Name :}, {Exp_time :}, {Remarks : }}
Your help will be greatly appreciated.
Best,
Sushil

 Respuesta aceptada

Perhaps a structure would be useful for storing that information:
exp_info = struct( ...
'Date','2022.06.29', ...
'Name','experiment_1', ...
'Exp_time','00:05:00', ...
'Remarks','Wednesday morning at five o''clock, as the day begins');
Store it in the 7th cell of cell_array, like you plan to:
cell_array = repmat({rand(10)},1,6);
cell_array{1,7} = exp_info
cell_array = 1×7 cell array
{10×10 double} {10×10 double} {10×10 double} {10×10 double} {10×10 double} {10×10 double} {1×1 struct}
cell_array{1,7}
ans = struct with fields:
Date: '2022.06.29' Name: 'experiment_1' Exp_time: '00:05:00' Remarks: 'Wednesday morning at five o'clock, as the day begins'
Or rearrange the thing and store the experimental data in the same structure:
% - one possibility -
exp_info.Results = cell_array(1:6)
exp_info = struct with fields:
Date: '2022.06.29' Name: 'experiment_1' Exp_time: '00:05:00' Remarks: 'Wednesday morning at five o'clock, as the day begins' Results: {[10×10 double] [10×10 double] [10×10 double] [10×10 double] [10×10 double] [10×10 double]}
% - another possibility -
exp_info.Results = cell2struct(cell_array(1:6),sprintfc('Result_%d',1:6),2)
exp_info = struct with fields:
Date: '2022.06.29' Name: 'experiment_1' Exp_time: '00:05:00' Remarks: 'Wednesday morning at five o'clock, as the day begins' Results: [1×1 struct]
exp_info.Results
ans = struct with fields:
Result_1: [10×10 double] Result_2: [10×10 double] Result_3: [10×10 double] Result_4: [10×10 double] Result_5: [10×10 double] Result_6: [10×10 double]

6 comentarios

hi @Voss this is what I exactly need but is it possible to make user input program because I have enter this information every time when I complete the experiment.
You can use input to gather user input:
Date = input('Enter the Date: ','s');
Name = input('Enter the Name: ','s');
% etc.
Or you can make a GUI:
hi @voss, sorry to bother you I have one more question;
I tried to make a struct_array I have written this code to store the information in such a way that every time I update the new file it supposed to add new field in the cell but instead of creating new field it is replacing the previous field. For instance previously if I have cell_blocknew{1,c}.file1, the new file is
cell_blocknew{1,c}.file2 But I wanted in cell_blocknew{1,c}->file1
cell_blocknew{1,c}->file2
and each time ccell will increment by 1. e.g 1 2 3 and so on.
Do you have any suggestion? your help will be greatly appreciated.
[~,c]=size(cell_blocknew);
[~,ccell]=size(cell_blocknew{1,1});
filename=sprintf('file%d',ccell);
cell_blocknew{1,c}.(filename)= struct( ...
'Flystrain',input('please specify the fly strain: ','s'), ...
'Date',input('mm:dd:yyyy ','s'), ...
'Expt_starttime',input('hh:mm:ss ','s'), ...
'Position_deadflies',input('Enter the position of dead flies: '), ...
'Remarks',input('Note: ','s'));
It's not completely clear to me what you want to do or what the problem is, but instead of having numbered fields in a structure (file1, file2, etc.), maybe use a structure array (which you say you tried, so maybe this is your intent anyway):
% initialize empty struct array with the right fields:
S = struct( ...
'Flystrain',{}, ...
'Date',{}, ...
'Expt_starttime',{}, ...
'Position_deadflies',{}, ...
'Remarks',{});
% add a new struct element to the struct array:
% (presumably this is inside a loop in the actual code)
S(end+1) = struct( ...
'Flystrain',input('please specify the fly strain: ','s'), ...
'Date',input('mm:dd:yyyy ','s'), ...
'Expt_starttime',input('hh:mm:ss ','s'), ...
'Position_deadflies',input('Enter the position of dead flies: '), ...
'Remarks',input('Note: ','s'));
I call the structure array S because I'm not sure how it would fit in with your variables.
So, actually I have a cell array of 1x7: cell_array{1,1:6},cell_array{1,7}. What I am trying to do is I am trying struct_array inside cell_array{1,7} in order to store some information. and what I want is each time when I update the data in cell_array have to store separate information. So that I need struct_array inside the cell_array{1,7} should be increamented by 1.
for instance:
cell_array{1,7}(1)='Flystrain',input('please specify the fly strain: ','s'), ...
'Date',input('mm:dd:yyyy ','s'), ...
'Expt_starttime',input('hh:mm:ss ','s'), ...
'Position_deadflies',input('Enter the position of dead flies: '), ...
'Remarks',input('Note: ','s'));
similarly,
cell_array{1,7}(2)='Flystrain',input('please specify the fly strain: ','s'), ...
'Date',input('mm:dd:yyyy ','s'), ...
'Expt_starttime',input('hh:mm:ss ','s'), ...
'Position_deadflies',input('Enter the position of dead flies: '), ...
'Remarks',input('Note: ','s'));
but things are not working in my way. when I try to store
cell_array{1,7}(2)='Flystrain',input('please specify the fly strain: ','s'), ...
'Date',input('mm:dd:yyyy ','s'), ...
'Expt_starttime',input('hh:mm:ss ','s'), ...
'Position_deadflies',input('Enter the position of dead flies: '), ...
'Remarks',input('Note: ','s'));
it just replace cell_array{1,7}(1). Does it make sense to you? i have tried the recent one which you just send me. still its not working. So, sorry I am killing your time.
Dear voss, I really appreciate your help. thank you so much you are absolutely right. I made a slight mistake in my code. Thank you so once again for your time and your constant help.

Iniciar sesión para comentar.

Más respuestas (0)

Productos

Versión

R2022a

Etiquetas

Preguntada:

el 26 de Jun. de 2022

Comentada:

el 27 de Jun. de 2022

Community Treasure Hunt

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

Start Hunting!

Translated by