Create arrays from single array indexes
    7 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
Lets say I have array A which contains the some unsigned numbers. The length of A is always even. I have following code which I want to convert into vectorizztion.
A= [10 20 30 50];
output = cell(1, length(A)/2);
j = 1;
for i=1:2:length(A)/2
  output(j) = A(i):A(i+1);
  j = j + 1;
end
All I want to avoid this loop.
1 Commento
  Stephen23
      
      
 il 25 Mag 2015
				
      Modificato: Stephen23
      
      
 il 25 Mag 2015
  
			So this is the code in your original question:
A= [10 20 30 50];
output = cell(1, length(A)/2);
j = 1;
for i=1:2:length(A)/2
  output(j) = A(i):A(i+1);
  j = j + 1;
end
When I run the code it throws this error:
??? Conversion to cell from double is not possible.
Error in ==> temp at 7
  output(j) = A(i):A(i+1);
And if I convert the code so that the variable output uses cell array indexing it generates the following output:
>> output
output = 
    [1x11 double]    []
>> output{1}
ans =
    10    11    12    13    14    15    16    17    18    19    20
Is this really what you intended?
Risposte (3)
  Azzi Abdelmalek
      
      
 il 25 Mag 2015
        out=arrayfun(@(x) A(x):A(x+1),1:numel(A)/2,'un',0)
But this is not faster then a for loop
0 Commenti
  Stephen23
      
      
 il 25 Mag 2015
        
      Modificato: Stephen23
      
      
 il 25 Mag 2015
  
      Perhaps you intended it to do something like this:
>> A = [10 20 30 50];
>> B = arrayfun(@(b,e)b:e, A(1:2:end), A(2:2:end), 'UniformOutput',false)
B = 
    [1x11 double]    [1x21 double]
>> B{1}
ans =
    10    11    12    13    14    15    16    17    18    19    20
>> B{2}
ans =
  Columns 1 through 16
    30    31    32    33    34    35    36    37    38    39    40    41    42    43    44    45
  Columns 17 through 21
    46    47    48    49    50
0 Commenti
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!



