我仍然不明白您的问题,但是当我运行您的示例时,第三次迭代出现以下错误:
使用图窗时出错
单个输入必须是现有图窗句柄或
从 1 到 2147483646 的标量整数
ezplot>determineAxes 中的错误(第 563 行)
图(图);
ezplot>ezplot1 中的错误(第 449 行)
cax = determineAxes(fig);
ezplot 错误(第 145 行)
[hp,cax] = ezplot1(cax, f{1}, vars, labels,
args{:});
sym/ezplot 错误(第 72 行)
h = ezplot(fhandle(f),[y(1) y(2)],[y(3) y(4)]);
minimum_example 错误(第 7 行)
ezplot(i*x+j*y+1, [0,10,0,10])
(下次您询问时,请包括此类信息)。
发生的情况是,对于 - 在您的代码中i
或j
但在您的问题中a
或b
-x
或者y
被0
您相乘的情况,现在提供了太多的输入参数。其中一个被解释为图形句柄,因此评估无法继续(因为没有句柄的图形0
- 所有图形都有一个整数值作为句柄,因此出现错误)。
以下代码通过为ezplot
. 此外,我已更改i
并j
与您问题中的命名相对应 a
:b
syms x y
% define a figure and return the handle, f1
f1=figure;
% after initializing the figure, set hold on
hold on
for a = -1:0.5:1
for b = -1:0.5:1
% pass the figure handle, f1, to ezplot:
ezplot(a*x+b*y+1, [0,10,0,10],f1)
pause
end
end
现在,您将获得情节中的所有线条。
编辑
在 or 的情况下,a=0
您b=0
可能会得到意想不到的结果,因为等式在传递给ezplot
. 因此0*y
将导致它从评估中消失。0
您可以通过使用浮点相对精度eps
而不是使用来绕过此行为:
syms x y
% define a figure and return the handle, f1
f1=figure;
% after initializing the figure, set hold on
hold on
for a = -1:0.5:1
for b = -1:0.5:1
% pass the figure handle, f1, to ezplot:
% add eps to a and b so that the will be as close to zero
% as possible but not truly zero
ezplot((a+eps)*x+(b+eps)*y+1, [0,10,0,10],f1);
pause
end
end