MATLAB Answers

How to exclude certain rows and columns based on a column value?

38 views (last 30 days)
Dear all,
Attached you find a data file called "a" that has 30 rows and 24 columns. What I call "a trial" represents 1 row of "a" that includes all 24 columns, i.e. a trial refers to a(1,:).
I'm trying to create a variable called "b" that includes all trials of "a" where column 24 of "a" contains numbers <2560.
My first solution was
b= a(a(:,24)<2560)
Yet, this solution doesn't render the results I expect.
In order to unpack the problem, I've tried to create a new variable "c" that has only 1 column instead of 24 (like "a" does).
c= [2345; 2780; 345; 2150; 2908; 451]
Now, if I create a variable "d" that includes all rows in "c" that are <2560, the solution I used on the variable "b" above works.
d=c(c<2560)
This makes me think the problem lies with the fact that "a" has 24 columns (instead of 1 column, like "c" has). I'm trying to see what I'm missing, but I can't find an answer. Would any of you please be so kind as to help me out?
With gratitude,
Bianca

  0 Comments

Sign in to comment.

Accepted Answer

Birdman
Birdman on 2 Apr 2020
Firstly, at your first line of code, you started checking from the beginning of a. Instead, you should be checking the 23rd column of a
b= a(:,a(:,23)<2560)
Also, you are missing the fact that there is no element in the 23rd column of a that is less than 2560. Therefore that line will return empty.

  3 Comments

Bianca Elena Ivanof
Bianca Elena Ivanof on 2 Apr 2020
Thank you for taking the time to help me out.
I've now replaced the former attachment with another variable "a" that contains 24 columns. There are quite a few elements in the 24th column <2560. I've tried out your line of code above:
b= a(:,a(:,24)<2560)
, yet it's saying that "index exceeds matrix dimensions".
Again, I'm trying to deconstruct the problem - this one:
a(:,24)<2560
works.
Do you happen to be able to please help me further by any chance?
Bianca
Ameer Hamza
Ameer Hamza on 2 Apr 2020
I guess Birdman mistyped the order of subscripts in his answer. Correct command is
b = a(a(:,24)<2560,:);

Sign in to comment.

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by