麻烦看看这个matlab程序那里错了,调用总是说子函数出错,是想把一个分段函数加到一个函数上的

Ts=0.0005;
t=0:Ts:2; % 采样率2000HZ

y=f(t);
x=cos(5*pi*t)+f(t);

function y=f(t)
if abs(t-0.4)<0.02)||abs(t-0.8)<0.02)||abs(t-1.2)<0.02 ,
y=20*sin(100*pi*t);

else
y=0;
end

if abs(t-0.4)<0.02)||abs(t-0.8)<0.02)||abs(t-1.2)<0.02
这段代码有误,||为短路或,只能操作标量。
改为if (max(abs(t-0.4))<0.02)||(max(abs(t-0.8))<0.02)||(max(abs(t-1.2))<0.02)试试追问

还是不行耶,改成你说的提示是Illegal use of reserved keyword "if",if用法错误;按照原来的错误是Illegal use of reserved keyword "if"

追答

%主程序
%zhuchenxu.m
clc
clear
Ts=0.0005;
t=0:Ts:2; % 采样率2000HZ
y=fff(t);
x=cos(5*pi*t)+y
%%%%%%%%%%%%%%%%%%%%%
%以上是一个单独的主文件

%%%%%%%%%%%%%%%%%%%%%%%
%下面代码是子程序文件,也是一个单独的文件
% 保存时不要改名字,保存为fff.m
function y=fff(t)
if (max(abs(t-0.4))<0.02)||(max(abs(t-0.8))<0.02)||(max(abs(t-1.2))<0.02)
y=20*sin(100*pi*t);
else
y=0;
end

%我已调试通过,但程序本身没什么意义

追问

  谢谢啊,你说的很对,我是想写个分段函数加到别的函数上的,分段函数中的y忘了弄成数组,所以没有意义,不过你说的if那里的确是出错了,改后就能运行了,函数写成这样就好了
  n=length(t);
  a=zeros(1,n);
  n=0;

  for i=0:0.0005:2
  …………

  else
  y=0;
  end
  n=n+1;
  a(1,n)=y;
  end
  很感谢哦

温馨提示:答案为网友推荐,仅供参考
相似回答