How I can choose randomly value from cell?

2 ビュー (過去 30 日間)
Mira le 2019 年 12 月 7 日
Commented: Mira le 2019 年 12 月 8 日
>> 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

0 件のコメント

サインイン to comment.

採用された回答

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 2019 年 12 月 7 日
can I use it in struct?
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

サインイン to comment.

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

1 件のコメント

Mira le 2019 年 12 月 8 日
Thanks a lot , it works

サインイン to comment.

サインイン してこの質問に回答します。

Translated by