我想通过使用两个for
循环在MATLAB中绘制图形,如下所示:
for x=0:0.012566370614359173:4*pi
for n=0:1000
f(n+1)= (4./pi).*(((-1).^n)./(2*n+1))*cos((2*n+1)*x);
end
plot(x,f,'*')
end
它只是绘制一个x值并且在MATLAB中执行它需要很长时间的问题...即使我将plot(x,f,'*')
置于for
循环之外也需要很长时间跑...
如何绘制所有x值的f值?有没有其他方法,而不是使用两个for
循环?
答案 0 :(得分:3)
根本不需要任何for循环。此外,您使用了一些矩阵方式的运算符(*
),我不相信您的意图 - 而不是元素运算符(.*
) - 请注意我对您的定义所做的更改f
x = 0:0.012566370614359173:4*pi;
n = 1:1001;
f = (4./pi).*(((-1).^n)./(2*n+1)).*cos((2.*n+1).*x);
plot(x,f,'*');
答案 1 :(得分:1)
取出x的循环。
{% if groups['somegroup'] is defined %}
{% for host in groups.all if host not in groups['somegroup'] %}
...
{% endfor %}
{% else %}
{% for host in groups.all %}
...
{% endfor %}
{% endif %}