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 commentaires

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

Connectez-vous pour commenter.

 Réponse acceptée

David Fletcher
David Fletcher le 15 Avr 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 commentaires

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 le 15 Avr 2018
Maybe an example of exactly what you do want is required, because I have no idea
bondpen
bondpen le 15 Avr 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 le 15 Avr 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 le 15 Avr 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 le 15 Avr 2018
This works greats but the output is rows instead the desire columns.
David Fletcher
David Fletcher le 15 Avr 2018
Modifié(e) : David Fletcher le 15 Avr 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 le 15 Avr 2018
Modifié(e) : bondpen le 15 Avr 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 le 15 Avr 2018
Sorry, I meant replace the column list only, not the row indexing colon as well
bondpen
bondpen le 15 Avr 2018
Yea, that does the trick. What is ":," for? Does it tell command to choose columns?
David Fletcher
David Fletcher le 15 Avr 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.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by