how to extend third dimension of matrix?
    3 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
If I have a three dimensional matrix 180*360*5, suppose third dimension representing 5 months of a year (feb, march, may, aug, dec) third. I need to extend its third dimension and result should be 180*360*12. Now would I insert missing months. then I also want to assign zero on inserted months.
0 Commenti
Risposta accettata
  the cyclist
      
      
 il 19 Feb 2015
        If A is your array:
A = cat(3,A,zeros(180,360,7));
2 Commenti
  Stephen23
      
      
 il 20 Feb 2015
				
      Modificato: Stephen23
      
      
 il 20 Feb 2015
  
			This is not clear at all. You need to explain your requirements to us clearly. Your question stated:
- "result should be 180*360*12 180*360*12"
 - "assign zero on inserted months"
 
Both The Cyclist's and my own answer provide you exactly this. Can you see how we tried to help you by giving you what you asked for ? If you want something else, then you will have to explain it in more detail, with examples. Sorry, but we don't read minds.
Più risposte (1)
  Stephen23
      
      
 il 19 Feb 2015
        
      Modificato: Stephen23
      
      
 il 19 Feb 2015
  
      The fastest way to enlarge an existing array is to simply assign a value in one "corner" of your array:
A = [180x360x5] % define your array...
A(1,1,12) = 0;
This places the given value (zero) and fills the undefined values with zero. The final dimensions of this example will be 180x360x12. This method has numerous advantages over other methods (such as concatenation):
- very fast!
 - no creation of intermediate variables
 - even though the zero is class double, because it is a scalar double it will be cast to match the class of A (uint, int, and even character).
 - by specifying the first indices as ones (1,1,...) it is robust to any changes in the array size, without rewriting.
 
1 Commento
  Stephen23
      
      
 il 20 Feb 2015
				Second attempt based on your comment:
B(180,360,12) = 0; % create array.
B(:,:,[2,3,5,8,12]) = A
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!