reshape a char array
25 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Hi,
I have the following MWE and I don't understand what matlab is producing:
I start with a simple 21-length char array:
ex = 'caggtgcagctggtgcagtct'
that I would like to reshape into a 7-by-3 array. Of course, I could use a loop for this, but I thought that I could just reshape it. However, when I do
reshape(ex, [7,3])
ans =
7×3 char array
'cag'
'agc'
'gca'
'gtg'
'tgt'
'ggc'
'ctt'
This makes no sense to me. I was expecting
'cag'
'gtg'
'cag'
'ctg'
'gtg'
'cag'
'tct'
I also tried reshape(ex, 7,3) and reshape(ex(:), 7, 3) without any luck. What is matlab doing? TIA
1 Commento
Guillaume
il 26 Feb 2020
Matlab is column major. This means that when you reshape something into something else, the something else is filled column by column, not row by row. So, indeed as David shows, to get the output you want you reshape then transpose.
Risposta accettata
David Hill
il 26 Feb 2020
reshape(ex,[3,7])';
First number is row and second is column. Matrix is numbered down first.
2 Commenti
Guillaume
il 26 Feb 2020
You'll find a number of languages (C-based mostly) are row majors and an equivalent number are column-major (Matlab, Fortran, and other math-focused languages) while a few can't make their mind up (eg. OpenGL).
So, it's only counterintuitive if you've never been exposed to the other side.
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!