У меня есть некоторый рабочий код Octave / Matlab, который я пытаюсь заставить работать / преобразовать в Python 3.7.4, поэтому я могу использовать его в Blender 2.82, который использует Python 3.7.4 .
Рабочий код Octave / Matlab:
c=[7,-2,-4,-8]
[rw col]= size(c); %get size a 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
a = c .+ [c(end).*(0:4)].';
b = vec (a.', 2);
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
( Если вам нужен if / then / else команды вот оригинальный вопрос .)
Я попробовал онлайн конвертировать октаву / матрицу в python конвертер , и это дает мне код ниже (который не полностью работает). Как я могу исправить код Python 3.x, чтобы он работал в Blender 2.82, который использует Python 3.7.4?
c = mcat([7, -2, -4, -8]); print c
[rw, col] = size(c)#get size a array
num_of_loops = 5; print num_of_loops#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, mslice[:]).lvalue = c#add c array to 1st row in array
for n in mslice[1:num_of_loops]:
n()
mcat([c(end) *elmul* (mslice[0:4])]).T
b = vec(a.T, 2)
end
b = reshape(a.cT, 1, mcat([]))