How to "partner" 2 matrixes
1 次查看(过去 30 天)
显示 更早的评论
The matrix X is randomly shuffled, how does Y follow up that shuffle?
i.e:
X=[4 7 1 9;
3 0 6 8]
Y=[32 6 4 21;
77 89 0 2]
after the shuffle:
X=[3 9 4 6;
1 7 8 0]
Y=[77 21 32 0;
4 6 2 89]
0 个评论
采纳的回答
Guillaume
2018-11-30
X = [4 7 1 9;
3 0 6 8]
Y = [32 6 4 21;
77 89 0 2]
newX = [3 9 4 6;
1 7 8 0]
[found, where] = ismember(newX, X);
assert(all(found(:)), 'some elements of newX are not present in X')
newY = Y(where)
3 个评论
Guillaume
2018-12-2
Keep the list of elements you're going to replace (i.e. the logical array X == 0) so that you can use for Y as well:
X=[4 7 1 0;
3 0 6 8]
Y=[32 6 4 21;
77 89 0 2]
toreplace = X == 0;
X(toreplace) = a;
Y(toreplace) = a;
更多回答(1 个)
madhan ravi
2018-11-30
编辑:madhan ravi
2018-11-30
X=[4 7 1 9;
3 0 6 8]
idx=randsample(1:numel(X),numel(X));
shuffled_X=reshape(X(idx),size(X,1),[])
Y=[32 6 4 21;
77 89 0 2]
shuffled_Y=reshape(Y(idx),size(Y,1),[])
command window:
>> COMMUNITY
X =
4 7 1 9
3 0 6 8
shuffled_X =
1 0 3 7
8 9 4 6
Y =
32 6 4 21
77 89 0 2
shuffled_Y =
4 89 77 6
2 21 32 0
>>
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!