2014-04-13 46 views
1

这里的所有条目的产品是什么,我试图做的:查找向量x

x与n个条目x1,x2,...xn的向量。写,其计算与定义的项目向量p通过

pk = X1*X2....Xk-1*Xk+1...Xn. 
for each k =1,2,...n. 

pkx所有条目的产品除了xk毡实验室程序。 (使用prod命令计算所有条目的乘积,然后除以xk)。如果x中的任何一个条目为零,则采取适当的特殊措施。在整个过程中使用矢量,而不是'for'循环。

我花了太多时间来弄清楚这个问题。我仍然无法得到它。请帮忙!

回答

1
  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 
    
  2. 节能计算:

    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 
    
+0

太感谢你了!有道理 – user3529945