Octave 八度:写向量函数而不在索引上循环

Octave 八度:写向量函数而不在索引上循环,octave,vectorization,Octave,Vectorization,我如何在不单独指定每个组件(如下所示)或通过循环索引的情况下实现以下函数: function h = f(a) h(1) = a(2)*a(3)/a(1); h(2) = a(3)*a(1)/a(2); h(3) = a(1)*a(2)/a(3); endfunction 考虑到在所有情况下表达式都可以重写为a(1)*a(2)*…*a(n)/a(i)^2,我们得到以下结果: function h = f(a) for i=1:length(a)

我如何在不单独指定每个组件(如下所示)或通过循环索引的情况下实现以下函数:

function h = f(a)
    h(1) = a(2)*a(3)/a(1);
    h(2) = a(3)*a(1)/a(2);
    h(3) = a(1)*a(2)/a(3);
endfunction

考虑到在所有情况下表达式都可以重写为
a(1)*a(2)*…*a(n)/a(i)^2
,我们得到以下结果:

function h = f(a)
    for i=1:length(a)
        h(i) = prod(a)/a(i)^2;
    endfor
endfunction
另一个解决方案:

function h = f(a)
  h = prod(a)./a.^2;
endfunction

考虑到在所有情况下表达式都可以重写为
a(1)*a(2)*…*a(n)/a(i)^2
,我们得到以下结果:

function h = f(a)
    for i=1:length(a)
        h(i) = prod(a)/a(i)^2;
    endfor
endfunction
另一个解决方案:

function h = f(a)
  h = prod(a)./a.^2;
endfunction

+1用于
另一个解决方案
零件。成功了。我不想循环索引(您的第一个解决方案),问题指定了这一点。尽管我强调得不够。+1用于
另一个解决方案部分。成功了。我不想循环索引(您的第一个解决方案),问题指定了这一点。虽然我强调得不够。