matlab里编子函数和编写主程序的问题

function [y] =dvSegment(x)
%UNTITLED Summary of this function goes here
% Detailed explanation goes here
if x<-5
y=(x*x+5*x-1)/6 ;
elseif -5<=x&5>x
y=exp(x-1);
elseif x>=5
y=log10(7*x+4); 这是我编的子函数。。怎么编写主程序。
end

第1个回答  2015-11-03

主程序:

x = -10:0.1:10;
y = arrayfun(@dvSegment,x);
plot(x,y)
xlabel x; ylabel y

追问

能帮我解释下y = arrayfun(@dvSegment,x);这个语句吗。。
我刚学,只以为打y=dvSegment(x)
还有怎么把函数值求出来。。。

追答

arrayfun对数组所有元素进行隐式循环,大致相当于

for i=1:length(x), y=dvSegment(x(i)); end

这是因为你写的子函数不支持输入为数组的情况(问题出在if语句,不报错,但结果不对),所以只能逐个元素调用。

本回答被提问者和网友采纳
相似回答