comparing two matrices of different dimensions
1 次查看(过去 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?
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!