Повышение эффективности FOR l oop в Октаве - PullRequest
0 голосов
/ 16 февраля 2020

У меня есть рабочий FOR l oop ниже, и мне было интересно, есть ли способ избавиться от оператора if / then / else?

c = randi([-10 10],1,4); %create random integers
[rw col]= size(c); %get size of array

num_of_loops=5 %number of loops to iterate
a= zeros(num_of_loops,col); %allocate memory to array
b= zeros(1,(rw*col)); %allocate memory to array

a(1,:)=c; %add c array to 1st row in array 

for n=1:num_of_loops
  n
  if (n==1)
    last_num_in_array=c(1,end); %get last number in array
    a(2,:)=last_num_in_array+c; %start with the last number from row above in array and add original c array to it
  else
    last_num_in_array=a(n-1,end); %get last number in array
    a(n,:)=last_num_in_array+c; %start with the last number from row above in array and add original c array to it
  endif

endfor

b=reshape(a',1,[]);

Вот несколько примеров случайных данных. Обратите внимание, что данные будут случайными.

c= 
7   -2  -4  -8

a=
 7  -2  -4  -8
-1  -10 -12 -16
-9  -18 -20 -24
-17 -26 -28 -32
-25 -34 -36 -40

b=
7   -2  -4  -8  -1  -10 -12 -16 -9  -18 -20 -24 -17 -26 -28 -32 -25 -34 -36 -40                                                             
...