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 Commenti

Birdman
Birdman il 15 Apr 2018
So, question?
bondpen
bondpen il 15 Apr 2018
So when i input a matrix it will output only every fifth columns of input matrix.
Guillaume
Guillaume il 15 Apr 2018
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 il 15 Apr 2018
Modificato: bondpen il 15 Apr 2018
I just in habit in this naming scheme lmao.
It giving me rows instead of columns.
Jan
Jan il 16 Apr 2018
What give you rows? The shown code extracts columns.

Accedi per commentare.

 Risposta accettata

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 Commenti

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
bondpen
bondpen il 15 Apr 2018
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.
Jan
Jan il 15 Apr 2018
@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.
Guillaume
Guillaume il 15 Apr 2018
@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.
bondpen
bondpen il 15 Apr 2018
This works greats but the output is rows instead the desire columns.
David Fletcher
David Fletcher il 15 Apr 2018
Modificato: David Fletcher il 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]
bondpen
bondpen il 15 Apr 2018
Modificato: bondpen il 15 Apr 2018
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
bondpen
bondpen il 15 Apr 2018
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.

Accedi per commentare.

Più risposte (0)

Categorie

Tag

Richiesto:

il 15 Apr 2018

Commentato:

Jan
il 16 Apr 2018

Community Treasure Hunt

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

Start Hunting!

Translated by