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

9 visualizzazioni (ultimi 30 giorni)
busra gogen il 25 Mar 2021
Commentato: busra gogen il 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
0 CommentiMostra -2 commenti meno recentiNascondi -2 commenti meno recenti

Accedi per commentare.

Risposta accettata

Bob Thompson il 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);
3 CommentiMostra 1 commento meno recenteNascondi 1 commento meno recente
Bob Thompson il 26 Mar 2021
I apologize, there's an extra 'all' because I changed my method half way through writing that.
M = all(ismember(all(:,1:2),c,'rows'),3);
I think MATLAB is giving you the same magnitude for the duplicate lat/long because of the indexing setup in your loops. The logic indexing should fix that, though you will end up with all seven magnitudes for the duplicates. If that's what you want, then this should be good. If you only want one entry for the max value then things get more complicated.
busra gogen il 26 Mar 2021
It works!!! I cannot tell you how iam happy now. Thank you very much!!!!!!!!! :)

Accedi per commentare.

Categorie

Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by