Select a random cell from multiple matrices
2 次查看(过去 30 天)
显示 更早的评论
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
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?
回答(1 个)
Guillaume
2015-5-14
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);
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrices and Arrays 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!