Octave:在不循环索引的情况下编写向量函数
Octave: Writing vector function without looping over index
如何在不单独指定每个组件(如下所示)或通过遍历索引的情况下实现如下函数:
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
如何在不单独指定每个组件(如下所示)或通过遍历索引的情况下实现如下函数:
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