Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

To resolve issues starting MATLAB on Mac OS X 10.10 (Yosemite) visit: http://www.mathworks.com/matlabcentral/answers/159016

How to plot several different points from an equation? (Macaulay's notation)

Asked by Edvardas on 22 Oct 2012

Hello,

I am fairly new to Matlab and thought of using it for one project to plot some graphs. Problem is it requires Macaulay's notation. At the moment I've come up with a function file like this:

function [ V ] = Untitled2( x )
%UNTITLED2 Summary of this function goes here
%   Detailed explanation goes here;
R1h= 632.568;
R2h= -2722.793;
Th= -2090.455;
A=x;
B=x-0.76;
C=x-0.99;
if A>0 
      A=1;
else
      A=0;
end
if B>0 
      B=1;
else
      B=0; 
end
if C>0 
      C=1;
else
      C=0;
end
V=R1h*A+R2h*B+Th*C;
plot(x, V);
end

Now, it gives the correct values for the shear force V whenever I add a specific coordinate x, however I can't think of a way for it to plot all the points. To be more precise I need it to be at V= 632.568 up until x=0.76, then it should go down straight to V= -2090.455 up until x=0.99 and then return to 0.

If any advice could be given about how to plot such a graph (or make better use of Matlab for Macaulay's notation) I would really appreciate!

Thanks!

0 Comments

Edvardas

Products

No products are associated with this question.

2 Answers

Answer by Walter Roberson on 22 Oct 2012

Remove the plot() statement. Then in a new driver routine use

V = arrayfun(@Untitled2, x);   %x can be a vector
plot(x, V);

1 Comment

Edvardas on 22 Oct 2012

Thank you for such a quick reply!

It seemed to have worked halfway only though, the figure now seems to show the correct range of numbers on x and V axis, however it doesn't draw the graph itself. (Not sure if relevant, but used x as a matrix 0:0.01:0.99). So a little bit confused now, can anything be done about that?

Edit: Just noticed the negative x values, not sure why they're there, considering the matrix I added was from 0 to 0.99.

Walter Roberson
Answer by Matt Fig on 22 Oct 2012
Edited by Matt Fig on 22 Oct 2012
function [ V ] = Untitled2(x)
V = zeros(size(x));
V(x<=.76) = 632.568;
V(x>.76 & x<=.99) = -2090.455;

Now, from the command line:

x = 0:.001:1.5;
plot(x,Untitled2(x))

Also, why not name your function some useful name, like:

function V = shearforce(x)
V = zeros(size(x));
V(x<=.76) = 632.568;
V(x>.76 & x<=.99) = -2090.455;

This 'Untitled2' business is just awful!

1 Comment

Edvardas on 22 Oct 2012

Thanks! Works like a charm for shear force. Was hoping that it would be possible to do with my initial try, as that would be quite easy to transform into a bending moment function as well. Will try to figure out something along this path as well :)

And yes, good point with the naming, got too enthusiastic with Matlab whilst trying to figure out how to do the function, completely forgot about renaming!

Matt Fig

Contact us