2016-12-06 164 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好点,可能会稍快 –