# How I can choose randomly value from cell?

11 views (last 30 days)
Mira le on 7 Dec 2019
Commented: Mira le on 8 Dec 2019
>> SI
SI =
1×2 cell array
[1×2 double] [1×2 double]
>> for i=1:numel(SI)
disp(SI{i});
end
1 2
2 3
I want to choose value randomly from SI
for example the value is just one value among 1 2 like 1 or 2

David Hill on 7 Dec 2019
Why not just,
a=cell2mat(SI);
b=a(randi(length(a)));%b is a random value inside all of SI
##### 2 CommentsShowHide 1 older comment
Mira le on 7 Dec 2019
Cell contents reference from a non-cell array object.
Error in cell2mat (line 42)
cellclass = class(c{1});
Error in Evaluation (line 87)
a1=cell2mat(TI(q).Si);
This error appear when i use cell2mat
TI is struct and Si is field of TI of type cell

Image Analyst on 7 Dec 2019
Here's one way, if you need to get the value within a loop where you're doing other things:
SI = {[1, 2], [2, 3]}
for k = 1 : length(SI)
% Extract the numerical array from the cell.
thisCellsContents = SI{k};
% Get a random index from that array
randomIndex = randperm(numel(thisCellsContents), 1);
% Get the value from the array.
theValues(k) = thisCellsContents(randomIndex);
% Show what we got
fprintf('Randomly picked %f from cell #%d\n', ...
theValues(k), k);
end
% Show all the values in the command window:
theValues
For example, you'll see:
SI =
1×2 cell array
{1×2 double} {1×2 double}
Randomly picked 2.000000 from cell #1
Randomly picked 3.000000 from cell #2
theValues =
2 3
Mira le on 8 Dec 2019
Thanks a lot , it works