How to make a piecewise function? (2024)

15 views (last 30 days)

Show older comments

john warts on 14 Mar 2020

  • Link

    Direct link to this question

    https://au.mathworks.com/matlabcentral/answers/510838-how-to-make-a-piecewise-function

  • Link

    Direct link to this question

    https://au.mathworks.com/matlabcentral/answers/510838-how-to-make-a-piecewise-function

Answered: john warts on 15 Mar 2020

Accepted Answer: Ameer Hamza

Open in MATLAB Online

I just want to plot the 3D function that makes a rollercoaster track. I have done it succesfully in 2D in desmos using arcs of circles through both implicit and parametric functions which I have attached.

I can not create a piecewise function that represents what I have in either desmos images.

What should I be putting into MATLAB to get the desmos equivalent? Is my piecewise failing because of the domain restrictions?

I have tried to make a piecewise function for only the x axis. The plan was to make 3 piecewise functions for x y and z, then to plot the 3 piecewise functions. Using the following command:

pwx = piecewise(0<=t<=pi/2,f1x,pi<=t<=3*pi/2,f2x,3*pi/2<=2*pi,f3x,0<=t<=pi,f4x,pi<=t<=3*pi/2,f5x)

where

f1x = @(t) 2*cos(t);

f2x = @(t) cos(t);

f3x = @(t) 2*cos(t)+3;

f4x = @(t) cos(t)+4;

f5x = @(t) 2*cos(t)+5;

and

t = linspace(0,3*pi/2)

I get the error message:

Undefined function 'piecewise' for input arguments of type 'function_handle'.

0 Comments

Show -2 older commentsHide -2 older comments

Sign in to comment.

Sign in to answer this question.

Accepted Answer

Ameer Hamza on 14 Mar 2020

  • Link

    Direct link to this answer

    https://au.mathworks.com/matlabcentral/answers/510838-how-to-make-a-piecewise-function#answer_420108

  • Link

    Direct link to this answer

    https://au.mathworks.com/matlabcentral/answers/510838-how-to-make-a-piecewise-function#answer_420108

Open in MATLAB Online

Piecewise takes a symbolic variable as input. Try

syms t

f1x = 2*cos(t);

f2x = cos(t);

f3x = 2*cos(t)+3;

f4x = cos(t)+4;

f5x = 2*cos(t)+5;

pwx = piecewise(0<=t & t<pi/2,f1x, pi<=t & t<3*pi/2,f2x, 3*pi/2<=t & t<2*pi,f3x, 0<=t & t<pi,f4x, pi<=t & t<3*pi/2, f5x);

fplot(pwx)

For the 2D parametric curve question you posted earlier, you can follow the same method as above and make a piecewise function for y values. However, this method has the disadvantage that all the lines will have the same style. You can try the following code for an alternative way to draw similar plots.

fig = figure();

ax = gca();

hold(ax);

grid on

daspect([1 1 1]);

a = 2;

b = 1;

fplot(@(t) a*cos(t), @(t) a*sin(t), [0, pi/2], 'Color', 'r', 'LineWidth', 1.5);

fplot(@(t) b*cos(t)+3, @(t) b*sin(t), [pi, 3*pi/2], 'Color', 'b', 'LineWidth', 1.5);

fplot(@(t) a*cos(t)+3, @(t) a*sin(t)+1, [3*pi/2, 2*pi], 'Color', 'g', 'LineWidth', 1.5);

fplot(@(t) b*cos(t)+4, @(t) b*sin(t)+1, [0, pi], 'Color', 'k', 'LineStyle', '--', 'LineWidth', 1.5);

fplot(@(t) a*cos(t)+5, @(t) a*sin(t)+1, [pi, 3*pi/2], 'Color', 'k', 'LineWidth', 1.5)

fplot(@(t) t, @(t) -1*ones(size(t)), [5 6], 'Color', 'm', 'LineWidth', 1.5)

How to make a piecewise function? (3)

3 Comments

Show 1 older commentHide 1 older comment

john warts on 14 Mar 2020

Direct link to this comment

https://au.mathworks.com/matlabcentral/answers/510838-how-to-make-a-piecewise-function#comment_809904

  • Link

    Direct link to this comment

    https://au.mathworks.com/matlabcentral/answers/510838-how-to-make-a-piecewise-function#comment_809904

Open in MATLAB Online

  • weird image.bmp

Thank you very much for helping me

I attempted to recreate what you have done in the y axis as well with a function:

pwy = piecewise(0<=t & t<pi/2,f1y, pi<=t & t<3*pi/2,f2y, 3*pi/2<=t & t<2*pi,f3y, 0<=t & t<pi,f4y, pi<=t & t<3*pi/2, f5y);

However I get a weird plot from

fplot(pwx,pwy)

I have attached an image of what i got. Is it me plotting something wrong or is that actually what it is meant to be? I don't mind it all having the same colour and line type, I just need to eventually use pwx, pwy and pwz in combination for a 3D track.

Ameer Hamza on 14 Mar 2020

Direct link to this comment

https://au.mathworks.com/matlabcentral/answers/510838-how-to-make-a-piecewise-function#comment_809933

  • Link

    Direct link to this comment

    https://au.mathworks.com/matlabcentral/answers/510838-how-to-make-a-piecewise-function#comment_809933

Open in MATLAB Online

I guess the problem is happening because two different functions are mapped on the same range, for example, f1y and f4y are mapped between [0, pi/2]. This causes issues for the fplot function. I couldn't find a way without creating two separate piecewise functions.

syms t

a = 2;

b = 1;

f1x = a*cos(t);

f2x = b*cos(t)+3;

f3x = a*cos(t)+3;

f4x = b*cos(t)+4;

f5x = a*cos(t)+5;

f1y = a*sin(t);

f2y = b*sin(t);

f3y = a*sin(t)+1;

f4y = b*sin(t)+1;

f5y = a*sin(t)+1;

ax = axes();

hold(ax);

pwx = piecewise(0<t & t<pi/2,f1x, pi<t & t<3*pi/2,f2x, 3*pi/2<t & t<2*pi,f3x);

pwy = piecewise(0<t & t<pi/2,f1y, pi<t & t<3*pi/2,f2y, 3*pi/2<t & t<2*pi,f3y);

fplot(pwx, pwy, [0 2*pi])

pwx = piecewise(0<t & t<pi,f4x, pi<t & t<3*pi/2, f5x);

pwy = piecewise(0<t & t<pi,f4y, pi<t & t<3*pi/2, f5y);

fplot(pwx, pwy, [0 2*pi])

john warts on 15 Mar 2020

Direct link to this comment

https://au.mathworks.com/matlabcentral/answers/510838-how-to-make-a-piecewise-function#comment_810158

  • Link

    Direct link to this comment

    https://au.mathworks.com/matlabcentral/answers/510838-how-to-make-a-piecewise-function#comment_810158

Thank you very much for your help. It works finally!

Sign in to comment.

More Answers (1)

john warts on 15 Mar 2020

  • Link

    Direct link to this answer

    https://au.mathworks.com/matlabcentral/answers/510838-how-to-make-a-piecewise-function#answer_420174

  • Link

    Direct link to this answer

    https://au.mathworks.com/matlabcentral/answers/510838-how-to-make-a-piecewise-function#answer_420174

Open in MATLAB Online

For anyone who wants to know the final script to make the rollercoaster in 3D:

(The figure command is essential)

syms t

a = 2;

b = 1;

f1x = a*cos(t);

f2x = b*cos(t)+3;

f3x = a*cos(t)+3;

f4x = b*cos(t)+4;

f5x = a*cos(t)+5;

f1y = a*sin(t);

f2y = b*sin(t);

f3y = a*sin(t)+1;

f4y = b*sin(t)+1;

f5y = a*sin(t)+1;

f1z = @(t) 0;

f2z = @(t) 0;

f3z = @(t) 0;

f4z = @(t) t;

f5z = @(t) pi;

figure

hold on;

pwx = piecewise(0<t & t<pi/2,f1x, pi<t & t<3*pi/2,f2x, 3*pi/2<t & t<2*pi,f3x);

pwy = piecewise(0<t & t<pi/2,f1y, pi<t & t<3*pi/2,f2y, 3*pi/2<t & t<2*pi,f3y);

pwz = piecewise(0<=t & t<pi/2,f1z, pi<=t & t<3*pi/2,f2z, 3*pi/2<=t & t<2*pi,f3z);

fplot3(pwx, pwy, pwz, [0 2*pi])

pwx = piecewise(0<t & t<pi,f4x, pi<t & t<3*pi/2, f5x);

pwy = piecewise(0<t & t<pi,f4y, pi<t & t<3*pi/2, f5y);

pwz = piecewise(0<t & t<pi,f4z, pi<t & t<3*pi/2, f5z);

fplot3(pwx, pwy, pwz, [0 2*pi])

0 Comments

Show -2 older commentsHide -2 older comments

Sign in to comment.

Sign in to answer this question.

See Also

Categories

MATLABGraphics2-D and 3-D PlotsLine Plots

Find more on Line Plots in Help Center and File Exchange

Tags

  • piecewise
  • parametric
  • function
  • 3d plots

Products

  • MATLAB

Release

R2019b

Community Treasure Hunt

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

Start Hunting!

An Error Occurred

Unable to complete the action because of changes made to the page. Reload the page to see its updated state.


How to make a piecewise function? (8)

Select a Web Site

Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .

You can also select a web site from the following list

Americas

  • América Latina (Español)
  • Canada (English)
  • United States (English)

Europe

  • Belgium (English)
  • Denmark (English)
  • Deutschland (Deutsch)
  • España (Español)
  • Finland (English)
  • France (Français)
  • Ireland (English)
  • Italia (Italiano)
  • Luxembourg (English)
  • Netherlands (English)
  • Norway (English)
  • Österreich (Deutsch)
  • Portugal (English)
  • Sweden (English)
  • Switzerland
    • Deutsch
    • English
    • Français
  • United Kingdom(English)

Asia Pacific

  • Australia (English)
  • India (English)
  • New Zealand (English)
  • 中国
  • 日本Japanese (日本語)
  • 한국Korean (한국어)

Contact your local office

How to make a piecewise function? (2024)
Top Articles
What Is Opm1 Treas 310 Deposit
Russ Hanneman Mark Cuban
Alvin Isd Ixl
Sams Gurnee Gas Price
Meet Scores Online 2022
Honda Odyssey Questions - P0303 3 cyclinder misfire
Non-Identity Functions
Greater Keene Men's Softball
Santa Maria Cars Craigslist
Drift Boss 911
Melissa N. Comics
Localhotguy
Levidia 2019
All classes in Pathfinder: Wrath of the Righteous
Mr Seconds Geneseo Ny
Swgoh Boba Fett Counter
Hsclink.health.unm.edu
Us151 San Jose
April 7 Final Jeopardy
Craigslist Of Valdosta Georgia
Myworld Interactive American History Pdf
Hannah Nichole Kast Twitter
Central Nj Craiglist
Gsa Elibary
Moss Adams Client Portal
We Take a Look at Dating Site ThaiFlirting.com in Our Review
Danielle Moodie-Mills Net Worth
Susan Bowers Facebook
Algebra 1 Unit 1 Interactive Notebook Pages – The Foundations of Algebra
6 Beste EN Nuud Kortingscode | Tot 55% korting | September 2024
Saint Lukes Epulse
Is Costco Gas Good? Quality, Cost & Benefits | Ridester
Spn 102 Fmi 16 Dd15
Hispanic supermarket chain Sedano's now delivering groceries in Orlando
Mannat Indian Grocers
Wisconsin Volleyball Team Leaked Pictures And Videos
Diablo 3 Metascore
Deborah Clearbranch Psychologist Georgia
Rise Meadville Reviews
Ticket To Paradise Showtimes Near Laemmle Newhall
Fallen Avatar Mythic Solo
Www.manhunt.cim
Where Is Item Number On Stanley Cup
Ohio State Football Wiki
The Lobby Fizeaustraat | Restaurant & Bar in Amsterdam-Oost
Cranes for sale - used and new - TrucksNL
Mexican cartel leader 'El Mayo' Zambada pleads not guilty to US charges
Is Chanel West Coast Pregnant Due Date
Slug Menace Rs3
Uk Pharmacy Turfland
Potassium | History, Uses, Facts, Physical & Chemical Characteristics
Lottozahlen für LOTTO 6aus49 | LOTTO Bayern
Latest Posts
Article information

Author: Francesca Jacobs Ret

Last Updated:

Views: 6212

Rating: 4.8 / 5 (68 voted)

Reviews: 83% of readers found this page helpful

Author information

Name: Francesca Jacobs Ret

Birthday: 1996-12-09

Address: Apt. 141 1406 Mitch Summit, New Teganshire, UT 82655-0699

Phone: +2296092334654

Job: Technology Architect

Hobby: Snowboarding, Scouting, Foreign language learning, Dowsing, Baton twirling, Sculpting, Cabaret

Introduction: My name is Francesca Jacobs Ret, I am a innocent, super, beautiful, charming, lucky, gentle, clever person who loves writing and wants to share my knowledge and understanding with you.