save data to cell array
8 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Avery Kettlewell
am 1 Apr. 2020
Bearbeitet: Ameer Hamza
am 1 Apr. 2020
I need to save all this data into a cell array in order for my function to work. Can someone please assist me??
while 1
shapeList = {'Circle','Square','Ellipse','Triangle','Rectangle'};
[selection,ok] = listdlg('PromptString','Select the next shape:',...
'SelectionMode','single',...
'OKString','Enter',...
'CancelString','No more',...
'ListString',shapeList);
if ~ok
break;
end
switch selection
case 1
shape='Circle';
case 2
shape='Square';
case 3
shape='Ellipse';
case 4
shape='Triangle';
case 5
shape='Rectangle';
end
shapecounter=shapecounter+1;
switch selection
case 1
prompt={'Enter diameter'};
case 2
prompt={'Enter side length dimension'};
case 3
prompt={'Enter major diameter','Enter minor diameter'};
case 4
prompt={'Enter base dimension', 'Enter height dimension'};
case 5
prompt={'Enter height', 'Enter width'};
end
firstdim=str2num(inputvalues{1});
if length(inputvalues)> 1
seconddim=str2num(inputvalues{2});
end
if isempty(ok)
colour='No_Colour';
else
switch selectionC
case 1
colour='Red';
case 2
colour='Yellow';
case 3
colour='Blue';
case 4
colour='Green';
case 5
colour='Orange';
case 6
colour='Violet';
otherwise
colour='No_Colour';
end
end
switch selection
case 1
area=pi*(firstdim/2)^2;
case 2
area=firstdim^2;
case 3
area=pi*(firstdim/2)*(seconddim/2);
case 4
area=0.5*firstdim*seconddim;
case 5
area=firstdim*seconddim;
end
end
Print_Me(shape);
2 Kommentare
Mohammad Sami
am 1 Apr. 2020
you either use the {} to store things in cell array
e.g.
a = {shape colour area};
or you can create a cell array and use index to store
a = cell(1,3);
a{1} = shape;
a{2} = colour;
a{3} = area;
Akzeptierte Antwort
Ameer Hamza
am 1 Apr. 2020
Bearbeitet: Ameer Hamza
am 1 Apr. 2020
As suggested by Mohammad Sami, you can use the cell array as described by him. Apart from that, you can significantly simplify your code by removing unnecessary the switch-case blocks. For example, try
counter = 1;
while 1
shapeList = {'Circle','Square','Ellipse','Triangle','Rectangle'};
[selection,ok] = listdlg('PromptString','Select the next shape:',...
'SelectionMode','single',...
'OKString','Enter',...
'CancelString','No more',...
'ListString',shapeList);
if ~ok
break;
end
shape{counter} = shapeList{selection};
prompt_list = {'Enter diameter', 'Enter side length dimension', ...
{'Enter major diameter','Enter minor diameter'}, ...
{'Enter base dimension', 'Enter height dimension'}, ...
{'Enter height', 'Enter width'}};
prompt = prompt_list{selection};
%
% ask for inputvalues
%
inputvalues = {'1'}; % for example
firstdim=str2num(inputvalues{1});
if length(inputvalues{1})> 1
seconddim=str2num(inputvalues{2});
end
if isempty(ok)
colour{counter}='No_Colour';
else
colour_list = {'Red', 'Yellow', 'Blue', 'Green', 'Violet', 'No_Colour'};
colour{counter} = colour_list{selection};
end
switch selection
case 1
area{counter}=pi*(firstdim/2)^2;
case 2
area{counter}=firstdim^2;
case 3
area{counter}=pi*(firstdim/2)*(seconddim/2);
case 4
area{counter}=0.5*firstdim*seconddim;
case 5
area{counter}=firstdim*seconddim;
end
counter = counter + 1;
end
Check the values of shape, colour and area variables.
0 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Surfaces, Volumes, and Polygons finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!