2014-04-13 45 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