reshaping and transposing question
    3 次查看(过去 30 天)
  
       显示 更早的评论
    
So my teacher gave us this problem where there's an array
C=[1 7; 2 8; 3 9; 4 10; 5 11; 6 12]
What he wants us to do with this array is use the reshape function with transpose in a single command to output a row vector which equals
[1 4 7 10 2 5 8 11 3 6 9 12].
I understand how the reshape and transpose work together, but i have no idea how to change the order of the numbers with the two functions. Any suggestions?
2 个评论
  Roger Stafford
      
      
 2015-2-22
				Be courageous! Try various successive reshapes and transposes. It takes only a few, namely three, to do the trick.
  John D'Errico
      
      
 2015-2-22
				Think about what order the elements are stored in memory. What do you know about this? Once you understand how MATLAB stores those elements, the reshape and transpose combination should be obvious.
回答(2 个)
  Image Analyst
      
      
 2015-2-23
        Yep. I got it done with one reshape, and two transposes. Two lines of code and one intermediate variable created, which was the result of the reshape. A brilliant engineer like Savanna should be able to get it done in a few minutes. Keep in mind that MATLAB goes down rows in a column first, before it moves over to the next column. Hint: Look up the colon : operator, and the reshape() function of course.
0 个评论
  Alan Silver
 2022-4-24
        
      编辑:Alan Silver
 2022-4-24
  
      This one command composed of two reshapings and one tranpose will 
do exactly what is shown.  
D =   reshape(transpose(reshape(C,3,4) ),1,12) ;
Innermost  
reshape(C,3,4) gives  
[  1  4    7   10  
   2  5    8   11 
   3  6    9   12  ]  
then , transposing it  gives 
[ 
1    2  3   
4    5  6 
7    8   9  
10  11   12 ]  
Then, reshaping again   by 1 X 12  
gives 
[ 1 4 7 10 2 5 8  11 3 6 9 12 ]
0 个评论
另请参阅
类别
				在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!




