vectorization of piecewise defined function

need to calculate output of
f(x)={3x^2+5, x<0 [and]
-3x^2+5, x>=0}
using vectorization and one output vector and cannot figure out. it is for a class assignment and I know it can easily be done with loops and conditional statements, but part of my lab requires it being calculated using vectorization with only one output vector. needs to be done on domain -9<=x<=9. input vector is not the problem, its calculating the piecewise defined output. please help!

답변 (3개)

Walter Roberson
Walter Roberson 2016년 5월 31일

2 개 추천

-sign(x) .* 3 .* x.^2 + 5

댓글 수: 1

dpb
dpb 2016년 5월 31일
Good catch on the specific formulation, Walter! :)

댓글을 달려면 로그인하십시오.

dpb
dpb 2016년 5월 30일

0 개 추천

Well, as homework it's not kosher to just provide the solution; that does you no good in learning...
HINT: type
doc 'logical indexing' % at command line and see if doesn't lead you to some useful information
Star Strider
Star Strider 2016년 5월 30일

0 개 추천

You came very close with your own code. I added a couple multiplication operators and a couple piece-wise multiplication operators to your code to get this:
f = @(x) (3*x.^2+5).*(x<0) + (-3*x.^2+5).*(x>=0);
t = linspace(-5, 5);
figure(1)
plot(t, f(t))
grid
The code works by creating a logical vector with the logical tests that are true or 1 where the test is true, and false or 0 elsewhere for each test and so for each calculation as well. These logical values are converted to their numerical equivalents when you use them in calculations.
See the documentation for Array vs. Matrix Operations for details on piece-wise operators.

카테고리

제품

질문:

2016년 5월 30일

댓글:

dpb
2016년 5월 31일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by