0%

matlab-sum的相关操作

1. 题目

2. 使用for循环进行解决

1
2
3
4
5
6
7
8
9
10
11
12
function f=ED(x,n)
a=0;
f=0;
for i=1:n
a=a+cos(x(i));
end

for i=1:n
b=n-a+i*(1-cos(x(i)))-sin(x(i));
f=f+b^2;
end
end

注意:

  • for i=1:n

3. 使用sum进行解决

代码:

1
2
3
4
5
function f=EDG(x,n)
a=sum(cos(x));
b=1:n;
f=sum((n-a+b.*(1-cos(x))-sin(x)).^2);
end

注意:

  • 常数可以和向量相加相减;
  • 常数与向量进行乘除操作时需要加(.),例如.*和./等操作;
  • 本题中的i是一个向量属于1:1:n;

4. 改进

减少参数n的输入:

1
2
3
4
5
6
function f=EDG(x)
n=length(x);
a=sum(cos(x));
b=1:n;
f=sum((n-a+b.*(1-cos(x))-sin(x)).^2);
end

注意:

  • 主要是使用length求向量x的长度;