comparing two matrices of different dimensions
5 次查看(过去 30 天)
显示 更早的评论
i have two matrices,A with dimension (23,2) and B with dimension (50465,2) .
i compare the first col of each matrix.
i need to keep values such that : abs(A(:,1)-B(:,1)) < 0.5.
C has four col : A(:,1) B(:,1) A(:,2) B(:,2)
my trial :
num_rows1=size(A(:,1));
num_rows2=size(B(:,1));
for i=1:1:num_rows1
for j=1:1:num_rows2
if abs(A(j,1)-B(i,1))<=0.5
%if data1(i,1)==0
% data1(i,1)=[];
% end
c1(j,[1:4])=[A(i,1),B(j,1), A(j,2), B(i,2)] ;
end
end
end
++++
ANY HELP
2 个评论
Bruno Luong
2023-8-20
c1(j,[1:4])=[A(i,1),B(j,1), A(j,2), B(i,2)] ;
You take an element from row #j (and 2nd column) of A (third element of rhs) and j supposes to be up to 50465?
What did you said? A has 23 rows?
采纳的回答
Bruno Luong
2023-8-21
编辑:Bruno Luong
2023-8-21
Fix several bugs of your for-loop code
load('data1.mat');
load('data2.mat');
A=data1;
B=data2;
num_rows1=size(A(:,1),1); % BUG here
num_rows2=size(B(:,1),1); % BUG here
c1 = nan([num_rows2,4]);
for i=1:1:num_rows1
for j=1:1:num_rows2
if abs(A(i,1)-B(j,1))<=0.5 % BUG here
c1(j,[1:4])=[A(i,1),B(j,1),A(i,2),B(j,2)] ; % BUG here
end
end
end
c1
4 个评论
更多回答(1 个)
Image Analyst
2023-8-20
% Create simple, sample integer data.
A = randi(9, 15, 2) % [x, y]
B = randi(9, 25, 2)
% Find distances between each each point and every other point.
distances = pdist2(A, B)
% Find map of where distances are less than some threshold
threshold = 3; % Whatever closeness value you want.
closeDistances = distances <= threshold
[rowsOfA, rowOfB] = find(closeDistances)
% Get in form of xA, xB, yA, yB
C = [A(rowsOfA, 1), B(rowOfB, 1), A(rowsOfA, 2), B(rowOfB, 2)]
2 个评论
Image Analyst
2023-8-21
Then we're not sure what you're asking when you tersely say "Any help". You have a for loop, which seems to be your "preferable" way. So what's the problem?
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Particle & Nuclear Physics 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!