关于matlab绘图时遇到的问题?

程序如下:
r=0:0.1:10
a={0.05,0.1,0.15,0.25,0.5}
c={'r','g','b','y','c'}
for i=1:5
plot(r,((1+(2*a[i]*r).^2)/((1-r.^2).^2+(2*a[i]*r).^2)),c[i])
hold on
end
运行时出现下面错误:
plot(r,((1+(2*a[i]*r).^2)/((1-r.^2).^2+(2*a[i]*r).^2)),c[i]) |
Error: Unbalanced or misused parentheses or brackets.
是什么原因,怎么改正,新手求教

楼主,你好。你的问题多是括号问题

r=0:0.1:10;%建议不必要输出时,在行末尾加分号;

a=[0.05,0.1,0.15,0.25,0.5];%这里是中括号,大括号则表示cell类型,中括号表示向量。

c=['r','g','b','y','c'];%这里是中括号

for i=1:5

    plot(r,((1+(2*a(i)*r).^2)/((1-r.^2).^2+(2*a(i)*r).^2)),c(i));%这里需要调用数组中值时,用小括号。

    hold on

end

图形结果如下:

(注:我添加了命令:ylim(0 0.002),以使更加美观)


希望对楼主有帮助,希望楼主采纳,欢迎交流。

追问

理论图形应该是五条曲线啊?为什么会是直线呢?
我的方程,(1+(2*a[i]*r).^2)/((1-r.^2).^2+(2*a[i]*r).^2)是不是有问题啊?它的值随r的变化不应该是变化的吗?

追答

好的,欢迎交流。

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-11-30
r=0:0.1:10;

a=[0.05,0.1,0.15,0.25,0.5];%改了

c=['r','g','b','y','c'];%改了

for i=1:5   
 plot(r,((1+(2*a(i)*r).^2)/((1-r.^2).^2+(2*a(i)*r).^2)),c(i))%中括号改了

   hold on

end

xlabel('r')

ylabel('a')

第2个回答  2013-11-29
把中括号换成小括号,a(i)而不是a[i]
相似回答