Matrix indexing - Picking columns

So I trying to give an output a matrix which contains every fifth column of input (A). Below is what my current script look like.
function B = Script30( A )
B = A(:,1:5:end);
end

5 Comments

So, question?
So when i input a matrix it will output only every fifth columns of input matrix.
Important difference: your code is not a script but a function. It's begging for confusion to name a function script***.
Your function already returns every fifth column of the matrix, starting at column 1, so it's not clear what problem you're having
bondpen
bondpen on 15 Apr 2018
Edited: bondpen on 15 Apr 2018
I just in habit in this naming scheme lmao.
It giving me rows instead of columns.
What give you rows? The shown code extracts columns.

Sign in to comment.

 Accepted Answer

Do you mean this instead of your 1:5:end?
5:5:end
If you explicitly also want column 1 the you could use [1 5:5:end]

12 Comments

would like it output every 5th columns of the input. Also you second shouldn't it be something like [1,5:5:end]?
Maybe an example of exactly what you do want is required, because I have no idea
For example A is Matrix which is guaranteed to even multiple of 5 to ensure the output will have column of 5 and if it more than 5 it should give the 5th column and 10th column and vice versa.
@David Wu: The question is still not clear. What's wrong with David Fletcher's suggestion? It seems to do what you are asking for.
@david,
[1 5:5:end] and [1, 5:5:end] are exactly the same. In matlab, you can use a space or a comma for separating horizontal elements of a vector. Using a comma is considered safer.
This works greats but the output is rows instead the desire columns.
David Fletcher
David Fletcher on 15 Apr 2018
Edited: David Fletcher on 15 Apr 2018
@Guillaume I don't dispute it. Unfortunately that's not what you've got. 1:5:end ~= 5:5:end ~= [1 5:5:end]
I have replaced the code to below: It still output rows, how did you make it out columns instead?
function B = Script30( A )
B = A(5:5:end)
end
A(:,5:5:end);
Gives me a columnised output on my system with a test matrix
Sorry, I meant replace the column list only, not the row indexing colon as well
Yea, that does the trick. What is ":," for? Does it tell command to choose columns?
What the first colon? It means all rows and columns 5,10,15...etc. If you don't have the first colon - as you have found - it will compact all selected columns into one row. Well that was a bit harder than it should have been, I think I need a lie down.

Sign in to comment.

More Answers (0)

Categories

Tags

Asked:

on 15 Apr 2018

Commented:

Jan
on 16 Apr 2018

Community Treasure Hunt

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

Start Hunting!