Asked by m
on 21 Mar 2014

i must plot a graph like this:

(there are many functions that are valid for difference particular time in a period, for example for td interval function 1 is valid, for tr interval function 2 is valid...)

a code like this is okey:

x=0:0.1:1;

a=x.^2;

y=1:0.1:2;

b=y.^3;

z=2:0.1:3;

c=z.^3;

plot(x,a,y,b,z,c);

but i have to plot these functions, there is a mistake, would you help me please ?

k=0:10.^-12:6.9*10.^-9;

a=25*10.^-6*80;

l=6.9*10.^-9:10.^-12:2.29*10.^-8;

b=25*10.^-6*l./(16*10.^-9)*(80+(2.16-80)*l./(16*10.^-9));

m=2.29*10.^-8:10.^-12:2.5*10.^-6;

c=4*2.16;

n=2.5*10.^-6:10.^-12:2.515*10.^-6;

d=4*2.16;

o=2.515*10.^-6:10.^-12:2.5244*10.^-6;

e=80*4*((1-o./(9.4*10.^-9))*o./(9.4*10.^-9));

p=2.5244*10.^-6:10.^-12:5*10.^-6;

f=25*10.^-6*80;

plot(k,a,l,b,m,c,n,d,o,e,p,f);

??? Error using ==> mtimes

Inner matrix dimensions must agree.

Answer by A Jenkins
on 21 Mar 2014

Edited by A Jenkins
on 21 Mar 2014

Accepted Answer

On the lines where you calculate b, and e, you probably want to use the element-wise multiplication .* instead of the matrix multiplication * between your two halves. For example:

b=25*10.^-6*l./(16*10.^-9).*(80+(2.16-80)*l./(16*10.^-9));

Also, I think you will want c,d, and f to be arrays, not scalars. For example:

c=4*2.16*ones(size(m));

m
on 21 Mar 2014

during the m time interval the function must go 4*2.16=8.64 value

i mean this

A Jenkins
on 21 Mar 2014

What exactly do you need help with? The other posters are right that your numbers don't make sense. For example, the value of "a" is 0.002, and the value of "e" is approximately -22,821,490. These are not going to show up nicely on the same plot.

Here is an example similar to your code with numbers that makes a nice plot. But we do not know what your numbers should be.

k=1:1:10; a=25*ones(size(k)); l=10:1:20; b=(l-10).^2+25; m=20:1:30; c=125*ones(size(m)); n=30:1:35; d=-(n-30).^3+125; o=35:1:40; e=0*ones(size(o)); plot(k,a,l,b,m,c,n,d,o,e);

m
on 22 Mar 2014

thank you for the graph and code

Log in to comment.

Answer by Joseph Cheng
on 21 Mar 2014

You are missing some (.*) in both b= and e=. However your a,b,c,d,e,f curves doesn't match the pictured curve.

Answer by Joseph Cheng
on 21 Mar 2014

So you are not just plotting you are trying to find the point on the curve for any t?

They you are best off forming this into one array and not spread across multiple arrays.

example:

t=0:10e-12:5e-6;

A = zeros(size(t));

A(t>=0 & t<=6.9e-9) = 25e-6*80; tempT =t(t>6.9e-9 & t<=2.29e-8); A(t>6.9e-9 & t<=2.29e-8) = 25*10^-6*tempT./(16*10^-9).*(80+(2.16-80)*tempT./(16*10^-9)); A(t>2.29e-8 & t<2.5e-6)= 4*2.16;

m
on 21 Mar 2014

m
on 21 Mar 2014

hey guys would you help me please

teacher said to us it is handy to use "for loop"

Log in to comment.

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

Learn moreOpportunities for recent engineering grads.

Apply Today
## 2 Comments

## Patrik Ek (view profile)

Direct link to this comment:https://www.mathworks.com/matlabcentral/answers/122571-how-can-i-do-this#comment_203424

I you just want a nice plot I would recommend inkscape or paint, or any other program. Doing this in matlab is just a pain. Are you sure the equations are correct? also, you can just catenate the array and thus get rid of

Another advice is to plot each set one by one fix one at the time.

## m (view profile)

Direct link to this comment:https://www.mathworks.com/matlabcentral/answers/122571-how-can-i-do-this#comment_203588

thanks for helping i must ask somethings to my teacher

Log in to comment.