2016-12-06 105 views
1

如何在不使用for/while循環的情況下在MATLAB中求解這個求和?這裏C是一個向量(1 * N矩陣),n =長度(c),x是標量。 (1)* x^1 + c(2)* x^2 + c()* x^3 + .... + c(n)* x^n。Sum for Matlab without for/while循環

或者我可以創建一個所有元素等於x但隨着功率增加的矩陣,如x,x^2,x^3 ....?

回答

3

有幾種方法:

  • result = polyval(fliplr([0 c]), x);
  • result = sum(c.*x.^(1:numel(c)));
  • result = sum(c.*cumprod(repmat(x, 1, numel(c))));

舉個例子,對於

c = [3 4 -5 2 3]; 
x = 9; 

上述任何給

result = 
     186975 

檢查:

>> c(1)*x^1+c(2)*x^2+c(3)*x^3+c(4)*x^4+c(5)*x^5 
ans = 
     186975 
+1

不錯的選擇:)這只是我在這裏看到的直矢量乘法......? 'c * x。^(1:numel(c))''。其實這是你的第二選擇,在其他寫作... – Adiel

+0

@Adiel好點,可能會稍快 –