Fastest way to have a matrix with intersected elements only between matrix and array
古いコメントを表示
Hello,
Lets say I have the following matrix:
0.1 0.2 0.3
0.3 0.5 0.7
0.8 0.1 0.9
And the following array:
0.1 0.3 0.5
Id like know the fastest way to get to the following result:
0.1 0 0.3
0.3 0.5 0.7
0 0 0
So far Ive achieved it with the following, which creates a mask and multiplys it:
idxs = ismembc( domainWeight, dWeightVector );
dWeightVector = bsxfun(@times, idxs, domainWeight);
Is there a fastest way to intersect a matrix with an array and return a matrix, with its original size, but only populated with the elements that exist on both original array and matrix?
Thank you
回答 (2 件)
Azzi Abdelmalek
2016 年 6 月 6 日
A=[0.1 0.2 0.3
0.3 0.5 0.7
0.8 0.1 0.9]
B=[0.1 0.5 0.3]
idx=ismember(A,B)
A(~idx)=0
Close
>> a.*ismember(a,v)
ans =
0.1000 0 0.3000
0.3000 0.5000 0
0 0.1000 0
>>
NB: It appears your answer isn't correct; 0.7 isn't included in v so 2nd row, 3rd column should be 0 but the 0.1 in row3, column 2, does match the 0.1 in the vector. Unless it were to be corresponding positions in the vector and the array row, but then the 0.3 wouldn't appear because while it's in both, it isn't in same column so that doesn't seem to be the rule, either.
1 件のコメント
Thiago Motta
2016 年 6 月 6 日
編集済み: Thiago Motta
2016 年 6 月 6 日
カテゴリ
ヘルプ センター および File Exchange で Creating and Concatenating Matrices についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!