我正在使用fplot。 (我也可以使用plot,我刚刚发现了更多fplot的示例)。 我想绘制形式为y = m * x的两条直线 其中m = V1和V2。 V1和V2是标量。 以下代码给我一个错误。
Matlab代码
fplot(@(x) V1,[-4 4],'green')
xlim([-4 4])
ylim([-4 4])
错误消息提示要向量化。我不确定该怎么做? 稍后,我将使用meshgrid功能将指定的网格添加到该图中。
[x,y]=meshgrid(-4:.5:4,-4:.5:4);
困扰我的是我没有在fplot语句中指定增量.5。 Matlab代码
fplot(@(x) V1,[-4 4],'green')
给出以下错误消息:
错误消息 警告:函数在数组输入上的行为异常。至 为了提高性能,请对函数进行适当的矢量化处理,以返回与输入参数相同的大小和形状的输出。
In matlab.graphics.function.FunctionLine>getFunction
In matlab.graphics.function.FunctionLine/updateFunction
In matlab.graphics.function.FunctionLine/set.Function_I
In matlab.graphics.function.FunctionLine/set.Function
In matlab.graphics.function.FunctionLine
In fplot>singleFplot (line 234)
In fplot>@(f)singleFplot(cax,{f},limits,extraOpts,args) (line 193)
In fplot>vectorizeFplot (line 193)
In fplot (line 163)
In m01 (line 121)
有人可以帮我把这些放在一起吗?谢谢。
答案 0 :(得分:2)
赋予fplot
的函数句柄应实现要绘制的y(x)
函数。因此,如果要绘制y = V1*x
线,则需要在函数句柄中将V1
乘以x
,如下所示:
fplot(@(x) V1*x,[-4 4],'green');
您的代码试图绘制y = V1
函数,该函数只是一个常数。 MATLAB期望函数句柄的输出与x
具有相同的尺寸,但是由于函数始终返回标量V1
,因此它无法按预期运行(因此出现警告)。如果您确实想绘制一个常数函数,则可以执行以下操作来消除警告:
fplot(@(x) V1*ones(size(x)),[-4 4],'green');
答案 1 :(得分:2)
您说过要绘制两行等式y = m * x, 其中x是向量,m是标量V1和V2,因此您要 在同一图形上为两个标量绘制2条线。
因此,您可以同时使用V1和V2将匿名函数直接放在fplot()命令中。
close all
% declare the x interval
x =[-4:1:4];
% declare the m values as V1 and V2
V1 = 3;
V2 = 4;
% plot the 1st function
fplot(@(x)V1*x, 'green')
% hold the axis to plot the
% 2nd function within the same axis
hold on
% plot the 2nd function
fplot(@(x)V2*x, 'red')
xlim([-4 4])
ylim([-4 4])
hold off
在声明函数时要注意的最重要的事情是 声明函数是否必须使用点(。)运算符 适用于正确地向量化该功能。
例如
y = @(x)x.^2 + 2*x;