Select a random cell from multiple matrices

let's say 3 matrices,
A = 30x20; B = 30x20; C = 30x20;
All three matrices contain NaNs.
I want to select a random value from each row out of ALL three matrices but none of the corresponding values should be a NaN. For e.g., if the random value is A(1,10) then B(1,10) and C(1,10) should not contain a NaN. Also it has to be the same cell number(row,column) for all matrices. If nothing matches moves to the next row.
And then repeat it for each row until the end.

2 件のコメント

Purushottama Rao
Purushottama Rao 2015 年 5 月 14 日
What is there inside A B C? does they contain Nan in few positions? What do you expect as output? is it a 30*20 matrix containing 1 s and 0 s?
Geant Bepi
Geant Bepi 2015 年 5 月 14 日
A, B and C matrices contain just random numbers (integers). Nans are just all over.
I expect the random value as the output.

サインインしてコメントする。

回答 (1 件)

Guillaume
Guillaume 2015 年 5 月 14 日

0 投票

If you want to go randomly through all the elements of the matrices for which none of the matrices contain a nan, simply use randperm to reorder the linear indices that do not contain NaN in any of your matrices:
validindices = find(~(isnan(A) | isnan(B) | isnan(C))); %linear indices that have no nans in any of the matrices
randindices = validindices(randperm(numel(validindices))) %reorder randomly
If you want subscripts instead of linear indices, just use ind2sub to convert, although you can use the linear indices just fine:
[randrows, randcols] = ind2sub(size(A), randindices);

カテゴリ

ヘルプ センター および File ExchangeCreating and Concatenating Matrices についてさらに検索

製品

質問済み:

2015 年 5 月 14 日

コメント済み:

2015 年 5 月 14 日

Community Treasure Hunt

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

Start Hunting!

Translated by