这是Matlab函数调用中的错误吗?

这是Matlab函数调用中的错误吗?,matlab,function,debugging,call,Matlab,Function,Debugging,Call,我在这里使用的代码是为了说明可能的错误。在代码中,我定义了三个函数,如下所示,并尝试将它们可视化 第一: $$y_1(x)=5\sin(x)$$ 第二点: $$y_2(x)=12-8\cos(x)$$ 第三项是上述两项的分段组合: when x<0: $$y_3(x)=y_1(x)$$ when x>=0: $$y_3(x)=(y_1(x)+y_2(x))/2$$ 我得到: 这表明在第三个子函数中,逻辑表达式:t这不是MATLAB中的错误,只是使用不当 您正在调用y3(t

我在这里使用的代码是为了说明可能的错误。在代码中,我定义了三个函数,如下所示,并尝试将它们可视化

第一:

$$y_1(x)=5\sin(x)$$
第二点:

$$y_2(x)=12-8\cos(x)$$
第三项是上述两项的分段组合:

when x<0:
$$y_3(x)=y_1(x)$$

when x>=0:

$$y_3(x)=(y_1(x)+y_2(x))/2$$
我得到:


这表明在第三个子函数中,逻辑表达式:t这不是MATLAB中的错误,只是使用不当


您正在调用
y3(t)
,其中
t
是一个向量,即
t=-pi:.1:pi。但是
y3
的代码在一个条件中使用
t
,即
如果您在以下方面是正确的:“当一个表达式的结果为非空且仅包含非零元素(逻辑或实数值)时,该表达式为真。否则,该表达式为假。”谢谢!我忘记了输入参数不是标量时的细微差别。
function m2mPlot
clear all
close all
clc

global a b c;
a=12;
b=8;
c=5;
t=-pi:.1:pi;

plot(t,y1(t),'b')
hold on
plot(t,y2(t),'m')
plot(t,y3(t),'r')
legend('y1','y2','y3')


function y=y1(t)
% The first function for testing
global c;
y=c*sin(t);

function y=y2(t)
% The 2nd function for testing
global a b;
y=a-b*cos(t);

function y=y3(t)
% The 3rd function for testing
if t<0  % It seems this logic value is always FALSE, why?
    y=y1(t);
else
    y=(y2(t)+y1(t))/2;
end
function y=y3(t)
    y=y1(t).*(t<0) + y2(t).*(t>=0);
end