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 comentarios

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

Iniciar sesión para comentar.

 Respuesta aceptada

David Fletcher
David Fletcher el 15 de Abr. de 2018
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 comentarios

bondpen
bondpen el 15 de Abr. de 2018
would like it output every 5th columns of the input. Also you second shouldn't it be something like [1,5:5:end]?
David Fletcher
David Fletcher el 15 de Abr. de 2018
Maybe an example of exactly what you do want is required, because I have no idea
bondpen
bondpen el 15 de Abr. de 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 el 15 de Abr. de 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 el 15 de Abr. de 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 el 15 de Abr. de 2018
This works greats but the output is rows instead the desire columns.
David Fletcher
David Fletcher el 15 de Abr. de 2018
Editada: David Fletcher el 15 de Abr. de 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 el 15 de Abr. de 2018
Editada: bondpen el 15 de Abr. de 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
David Fletcher
David Fletcher el 15 de Abr. de 2018
Sorry, I meant replace the column list only, not the row indexing colon as well
bondpen
bondpen el 15 de Abr. de 2018
Yea, that does the trick. What is ":," for? Does it tell command to choose columns?
David Fletcher
David Fletcher el 15 de Abr. de 2018
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.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Creating and Concatenating Matrices en Centro de ayuda y File Exchange.

Etiquetas

Preguntada:

el 15 de Abr. de 2018

Comentada:

Jan
el 16 de Abr. de 2018

Community Treasure Hunt

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

Start Hunting!

Translated by