1、打开MATLAB软件,如图所示。
2、建立一个脚本文件,具体方法如图所示。
3、打开的文档中,选择定义变量。
4、建立循环,求解分段函数。
5、接下来是结束部分,采用以下指令画图。这样便可以完成所有的分段函数画图。
6、得到的结果如下图:
这是一个很典型的问题哈
问题出在这里:myfun的输入x你是当做单个数字来处理的,而实际你plot(x,myfun(x))里的x是一个数组,所以在myfun的if判断里,只取了第一个元素x(1)做判断,然后用判断的结果来计算所有的x(i)
你要写成这样,我写个简单点的,你自己照着改
x=-1:01:1;
y=x(x>0) - 2 x (x<0)
plot(x,y)
另外,你可以在matlab里输入[1 2 3]>2,来看一下数组和单个数字比大小时,matlab是怎么处理的
你这个程序问题太多了
不推荐使用for循环。
你每得出一组y就画一次曲线,最终得出的是关于t的四条y曲线。
elseif 应该连用,不然每一个if都要一个end,而且else最好和if在不同的行
t到底定义成符号变量还是向量呢?
错误还有很多,任重而道远啊。
建议你先多了解一下语法,我这里按照你的意思编程如下:
clearclc
%第一、二段
t1=[0:005:5];
y1 = 02(t1>0&t1<=2) + (25t1-48)(t1>2&t1<=5);
plot(t1,y1)
%第三段
t2 = [5:01:8];
syms x t
s=exp(-(x-64)^2/029^2)/(sqrt(2pi)029);
y=52-(825int(s,5,'t')/40)(t-2)/3;
y2 = subs(y,t,t2);
hold on
y2(1) = y1(end);
plot(t2,y2)
%第四段
t3 = [8:002:10];
y3 = 479375ones(1,length(t3));
y3(1) = y2(end);
plot(t3,y3)
图如下:
当然方法不唯一,你可以将你的分段函数定义为m函数,然后再调用求取一组函数值。进行绘图。
close all
[X1,Y1]=meshgrid(-1:005:2,-1:005:2);
X=[ linspace(0,1,10)' linspace(0,1,10)'
linspace(1,2,10)' 1+zeros(10,1)
2+zeros(10,1) linspace(1,2,10)'
linspace(2,-1,30)' 2+zeros(30,1)
-1+zeros(30,1) linspace(2,-1,30)'
linspace(-1,2,30)' -1+zeros(30,1)
2+zeros(10,1) linspace(-1,0,10)'
linspace(2,0,20)' zeros(20,1)
X1(:) Y1(:)];
C=[1:150;[2:150 1]]';
dt=DelaunayTri(X,C);
IO = inOutStatus(dt);
trisurf(dt(IO, :), dtX(:,1), dtX(:,2), zeros(size(dtX(:,1))) )
hold on
trisurf(dt(~IO, :), dtX(:,1), dtX(:,2), exp(-dtX(:,1)+dtX(:,2)) )
hold off
shading interp
function func_baidu_56568133
x=-200:200;
y = (x<0)(x^2+(1+x)^(1/4)+5)
+(x==0)0
+(x>0)(x^2+(1-x)^(1/4)-5);
figure(1);
plot(x,y)
fh = @func_baidu_56568133_inner;
figure(2);
fplot(fh,[-200 200])
function y=func_baidu_56568133_inner(x)
y = (x<0)(x^2+(1+x)^(1/4)+5)
+(x==0)0
+(x>0)(x^2+(1-x)^(1/4)-5);
错误出在,y=015log(01/(1-x))+02表达式少了一个点除“/”
应改成 y=015log(01/(1-x))+02,ok了。
%% forfavonian9
n = -10:1:10;
x = zeros(size(n));
for i = 1:21;
if n(i) >= -4 && n(i) <= -1
x(i) = 2 n(i) + 10;
elseif n(i) >= 0 && n(i) <= 4
x(i) = 6;
else
x(i) = 0;
end
end
plot(n,x,'-')
A = [1 2 3;4 5 6;7 8 9; 10 11 12];
[v,i] = max(A,[],1);
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)