How I can choose randomly value from cell?

10 次查看(过去 30 天)
>> 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
David Hill 2019-12-7
Why not just,
a=cell2mat(SI);
b=a(randi(length(a)));%b is a random value inside all of SI
  2 个评论
Mira le
Mira le 2019-12-7
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

请先登录,再进行评论。

更多回答(1 个)

Image Analyst
Image Analyst 2019-12-7
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

类别

Help CenterFile Exchange 中查找有关 Structures 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by