以下是我要做的事情:
让x
成为具有n个条目x1,x2,...xn
的向量。编写一个mat-lab程序,用
pk = X1*X2....Xk-1*Xk+1...Xn.
for each k =1,2,...n.
pk
是除x
之外xk
的所有条目的乘积。 (使用prod命令计算所有条目的乘积,然后除以xk
)。如果x的其中一个条目为零,则采取适当的特殊操作。全程使用矢量而不是“#”;环。
我花了太多时间来弄清楚这个问题。我仍然无法得到它。请帮忙!
答案 0 :(得分:1)
蛮力:
n = numel(x);
X = repmat(x(:),1,n); %// put vector in column form and repeat
X(1:n+1:end) = 1; %// make diagonal 1
result = prod(X); %// product of each column
保存计算:
ind = find(x==0);
if numel(ind)>1 %// result is all zeros
result = zeros(size(x));
elseif numel(ind)==1 %// result is all zeros except at one entry
result = zeros(size(x));
result(ind) = prod(nonzeros(x));
else %// compute product of all elements and divide by each element
result = prod(x)./x;
end