hamidkor
جمعه 15 فروردین 1393, 07:16 صبح
باسلام،
دوستان عزیز بنده از کد زیر رو واسه تفکیک یک ماتریس به دو ماتریس استفاده کرده ام، که واسه مثالی با داده های کم جواب میده اما واسه ابعاد بالا نمیتونم جواب بگیرم! اما تفکیک ماتریس b بدینصورت است که مولفه هایی از b که با مولفه های a برابر باشند رو جدا میکنه و مابقی رو تو یه ماتریس جداگونه قرار میده.
a=[1 2 3;4 5 6;7 8 9];
b=[1 2 3;4 5 6;7 8 9;10 11 12];
[~, ~, ib] = intersect(a(:,end),b(:,end));
final = b(ib,:);
r = b(setdiff(1:size(b),ib),:);
ماتریس های حاصل:
final =
1 2 3
4 5 6
7 8 9
r =
10 11 12
اما واسه داده هایی با ابعاد بالا مثل یه میلیون در 3 جوابی نمیده و ماتریس باقیمانده یا همان (r) دقیقا همان ماتریس اولیه ی b رو میده و واسه final اصن عضوی قرار نمیده و تهی بدست میاد!!!!! از نقطه نظرات شما دوستان گرامی خوشحال خواهم شد؟
دوستان عزیز بنده از کد زیر رو واسه تفکیک یک ماتریس به دو ماتریس استفاده کرده ام، که واسه مثالی با داده های کم جواب میده اما واسه ابعاد بالا نمیتونم جواب بگیرم! اما تفکیک ماتریس b بدینصورت است که مولفه هایی از b که با مولفه های a برابر باشند رو جدا میکنه و مابقی رو تو یه ماتریس جداگونه قرار میده.
a=[1 2 3;4 5 6;7 8 9];
b=[1 2 3;4 5 6;7 8 9;10 11 12];
[~, ~, ib] = intersect(a(:,end),b(:,end));
final = b(ib,:);
r = b(setdiff(1:size(b),ib),:);
ماتریس های حاصل:
final =
1 2 3
4 5 6
7 8 9
r =
10 11 12
اما واسه داده هایی با ابعاد بالا مثل یه میلیون در 3 جوابی نمیده و ماتریس باقیمانده یا همان (r) دقیقا همان ماتریس اولیه ی b رو میده و واسه final اصن عضوی قرار نمیده و تهی بدست میاد!!!!! از نقطه نظرات شما دوستان گرامی خوشحال خواهم شد؟