1. Not finding help here? Sign up for a free 30min tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

MATLAB: Plot vectors from a function

  1. Mar 17, 2015 #1
    1. The problem statement, all variables and given/known data
    So I have a function that allows me to input two vectors and it will calculate the resultant vector. The code works fine.
    I need to call on this function and plot the two input vectors and the resultant; it's easier to explain if you look at the code.

    2. Relevant equations


    3. The attempt at a solution
    -------CODE-------
    run ResVec


    figure
    grid off

    %Data from ResVec
    x1 = [ 0 v1_x ];
    y1 = [ 0 v1_y ];
    x2 = [ 0 v2_x ];
    y2 = [ 0 v2_y ];
    x3 = [ 0 vR_x ];
    y3 = [ 0 vR_y ];
    hold on
    plot(x1,y1,x2,y2,x3,y3)
    ------------END--------------

    But MATLAB first of all doesn't pull out v1_x, v1_y etc. out of the function. I want it to pull the values out of the function ResVec and store them in the workspace. Second of all, it seems to be refusing to plot these vectors and keeps plotting just one of them.
     
  2. jcsd
  3. Mar 17, 2015 #2

    Orodruin

    User Avatar
    Staff Emeritus
    Science Advisor
    Homework Helper
    Gold Member

    Why do you need to save the results to workspace? The idea behind functions is to be independent and simply return the results without bothering too much about the internal happenings.

    Your plot command should plot all of your results, but it is impossible to trouble shoot without seeing the rest of your program. Did you try writing out the vectors to check that they are what you expect them to be?
     
  4. Mar 17, 2015 #3
    Ok I kept working on it and this is what I got:
    -------------------------
    run ResVec

    grid off

    %Data from ResVec
    x1 = [ 0 v1_x ];
    y1 = [ 0 v1_y ];
    x2 = [ 0 v2_x ];
    y2 = [ 0 v2_y ];
    x3 = [ 0 vR_x ];
    y3 = [ 0 vR_y ];
    hold on
    plot(x1,y1,'g')
    plot(x2,y2)
    plot(x3,y3,'r')
    legend('vec1', 'vec2', 'Resultant Vector')
    -----------------------
    Now it plots all of the vectors but it still doesn't plot them unless I have v1_x etc. in the work space. That's why I want them there. It just says v1_x not defined if I don't run the function file before I run the plotting program.


    The assignment wants us to run ResVec as a function and then plot the vectors from that function:

    "The script file should call (use) the function ResVec from Part 1 to compute the resultant vector."

    Also while we're at it, how do I make the plot auto-scale nicely?
     
  5. Mar 18, 2015 #4

    Orodruin

    User Avatar
    Staff Emeritus
    Science Advisor
    Homework Helper
    Gold Member

    So how are you attempting to return the values?
     
  6. Mar 18, 2015 #5

    donpacino

    User Avatar
    Gold Member

    if you type in "help plot" you will get a lot of info on the plot function. It will also link you to related functions.

    that being said, the 'axis' function will allow you to set the axis
     
  7. Mar 18, 2015 #6

    donpacino

    User Avatar
    Gold Member

    If ResVec generates V1_ex, then you MUST allways run it before plotting, unless it already exists in your workspace
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?
Draft saved Draft deleted



Similar Discussions: MATLAB: Plot vectors from a function
Loading...