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

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!

Réponses (2)

Remove the plot() statement. Then in a new driver routine use
V = arrayfun(@Untitled2, x); %x can be a vector
plot(x, V);

1 commentaire

Edvardas
Edvardas le 22 Oct 2012
Modifié(e) : Edvardas le 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.

Connectez-vous pour commenter.

Matt Fig
Matt Fig le 22 Oct 2012
Modifié(e) : Matt Fig le 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 commentaire

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!

Connectez-vous pour commenter.

Catégories

Question posée :

le 22 Oct 2012

Community Treasure Hunt

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

Start Hunting!

Translated by