Count two columns with corresponding data

3 ビュー (過去 30 日間)
Joakim Karlsson 2018 年 9 月 13 日
コメント済み: Joakim Karlsson 2018 年 9 月 13 日
Hey guys! So im having a question regarding counting things in matlab. I have a Matrix with one column of direction and one column of the speed So what i want to do is to find all data that has lets say a direction between 0-45degrees and a speed of 0<x<3 And then i want to count how many there are. Why I cant do it by hand is because its a large sheet of data. I guess we want to use some if statements like if 0<direction<45 & 0<speed<3 . . . But I dont know how to write it. Hope u get what i mean, thanks!

サインインしてコメントする。

採用された回答

jonas 2018 年 9 月 13 日

Try this:
x is speed, y is direction
sum(x>0 & x<3 & y>0 & y<45)
the conditions inside of the braces gives a logical array which yields true (1) when satisfied and otherwise false (0).
EDIT: removed brackets
6 件のコメント表示非表示 5 件の古いコメント
Joakim Karlsson 2018 年 9 月 13 日
Thanks guys I will probably solve it now with your help!

サインインしてコメントする。

その他の回答 (1 件)

Aquatris 2018 年 9 月 13 日

One thing you can do is (assuming you have newer versions of matlab);
A = rand(10,2); % the data
a1 = A(A(:,1)<0.3,:); % find rows where 1st column is less than 0.3 in data
a2 = a1(a1(:,2)>0.9,:); % find rows where 2nd column is greater than 0.9 in a1
n = size(a2,1); % number of rows of data where 1st colum is less than 0.3 and 2nd
% column is greater than 0.9
If you have older version, you just need to use find function to create a1 and a2, i.e.;
index = find(A(:,1)<0.3&A(:,2)>0.9);
a = A(index,:);
n = length(index);
6 件のコメント表示非表示 5 件の古いコメント
Aquatris 2018 年 9 月 13 日
Try the find method;
index = find( got29(:,5)>270& got29(:,5)<360);
a = got29(index,:); % rows got29 that satisfy the 270-360 in 5th column
n = length(index); % number of rows that satisfy the relation

サインインしてコメントする。

R2017b

Community Treasure Hunt

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

Start Hunting!