2016-11-15 37 views
0

我想繪製以下功能Matlab的陰謀許多分支(分段函數)

I(x) = 5*(1+x/2) for -2 < x < 0 
     5*(1-x/2) for 0 < x < 2 
     0  elsewhere 

我使用下面的腳本:

clc; close all; clear all; 
L = 4; 
x = -20:1:20; 
I((-L/2) < x & x<0) = 5*(1 + x/(L/2)); 
I(0 < x & x < (L/2)) = 5*(1 - x/(L/2)); 
plot (x,I), grid 

它不工作。你可以幫我嗎?

回答

1

您需要選擇x的哪些值用於每種情況。事情是這樣的:

L = 4; 
x = -5:0.1:5; 
I = zeros(size(x)); 
cond1 = (-L/2)<x & x<0; 
cond2 = 0<x & x<(L/2); 
I(cond1) = 5*(1 + x(cond1)/(L/2)); 
I(cond2) = 5*(1 - x(cond2)/(L/2)); 
plot (x,I), grid 

不知道你想做的事該boundry條件x=0x=-2x=2。但你只需要修改cond1cond2

+0

非常感謝mpaskov。它完美的作品。 – User1961

1

中有符號數學工具箱分段函數的一個新功能:piecewise

所以

syms x 
y = piecewise(-2<x<0,5*(1+x/2),0<x<2,5*(1-x/2),0); 
fplot(y)