MATLAB 的 ezplot 函数问题

3

我使用MATLAB内置的ezplot函数绘制参数方程图像。例如,

ezplot('sin(t)+2*cos(t)','3*sin(t)+cos(t)',[0,2*pi])

现在,我使用以下代码替换此表达式:
a=1;
b=2;
c=3;
ezplot('a*sin(t)+b*cos(t)','c*sin(t)+cos(t)',[0,2*pi])

enter image description here

我不知道如何处理这种情况?

2个回答

5
那是因为MATLAB不知道你定义的字符串中的 'a' 是叫做 a 的变量。
我的建议:如果你想改变方程式,可以使用字符串替换技术或字符串连接技术进行更改。
例如:ezplot([num2str(a) '+' num2str(b) '*cos(t)'],......)

对于整数值,这个解决方案是可以的,但请注意它在第四位小数后截断,降低了精度。 - Daniel
@Daniel 如果像所示那样使用num2str,则为true,但也可以指定精度作为输入。不过我更喜欢你的答案 ;)。 - Ander Biguri

4

不要传递字符串,而应该传递一个函数句柄。在这种情况下,a、b和c会被求值:

a=1;
b=2;
c=3;
ezplot(@(t)a*sin(t)+b*cos(t),@(t)c*sin(t)+cos(t),[0,2*pi])

1
非常感谢!我很喜欢你的解决方案 :) - xyz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接