# Counting variables, and getting last column of matrix within specific criteria

3 views (last 30 days)
busra gogen on 25 Mar 2021
Commented: busra gogen on 26 Mar 2021
Hi everyone,
I have a problem in matlab. I want to take last column of a 12094*3 matrix within specific criteria. 12094*3 matrix has three columns which are lattiutude, longitude and magnitude in order. I have another matrix has two columns which are longitudes and lattitudes and this matrix is a closed region. In my code c is closed region matrix and all is 12094*3 matrix. If lattitudes and longitudes of c are same with all matrix, it should take last column which is magnitude M. However, when i run the code it gives wrong values. There seems like that there are seven 6.9418, but it is not.
True values are last colum and there is only one 6.9418.
I found this error for only 36.5 and 25.5, but i think there are more mistakes.
My code is:
for j=1:size(c)
for i=1:size(all)
if ((all(i,1)==c(j,1)) && (all(i,2)==c(j,2)))
M(j)=all(i,3);
else
end
end
end

Bob Thompson on 25 Mar 2021
I'm not sure I entirely understand the issue with 6.9418. Are you saying you only want 6.9418 as the magnitude, even though you have seven instances of the lat/long of (36.5, 25.5)?
As a quick aside, you shouldn't need the loops to perform the logic, you should just be able to use logic indexing and get it all in one go.
M = all(all(ismember(all(:,1:2),c,'rows'),3);
busra gogen on 26 Mar 2021
It works!!! I cannot tell you how iam happy now. Thank you very much!!!!!!!!! :)