Solving for T3is in Matlab: Tips for Using XCount and Other Functions

  • Context: MATLAB 
  • Thread starter Thread starter rc flyer uk
  • Start date Start date
  • Tags Tags
    Matlab
Join the discussion
Registration is free. Ask a follow-up in this thread, or start your own.
3 replies · 6K views
rc flyer uk
Messages
11
Reaction score
0
I need some help with matlab! not sure which function to use!

I think i should use xcount ycount so i can do it but i shall explain the problem!

I have input some variables into matlab

p2=1e5
t2=288
p3=[2e5:1e4:10e5]
y=1.4

and now i wish to work out
t3is which should be:

t3is=t2*((p3/p2)^(y-1/y))

but that can't be done because you can't ^ a matrix!

So could i use xcount to do it or what is the best way!

Thanks in advance!

Matlab Noob:confused:
 
Physics news on Phys.org
You can use the function 'arrayfun' to apply a function to each element of an array.

How about code like this?

Code:
p2=1e5
t2=288
p3=[2e5:1e4:10e5]
y=1.4

t3is = p3/p2
arrayfun(@(x) x^(y - 1/y), t3is)
t3is = t3is * t2;

The notation @(x) defines a new anonymous function that acts on x. In this case, all it does is raise x to the (y - 1/y) power.

You can, of course, combine all three of the last lines into one, if you prefer:

Code:
t3is = t2 * arrayfun(@(x) x^(y - 1/y), p3/p2)

- Warren
 
Alternatively you can vectorise all variables Since I have not used arrayfun before I do not know which is faster.

Code:
p3=[2e5:1e4:10e5];
p2=1e5*ones(size(p3));
t2=288*ones(size(p3));
y=1.4*ones(size(p3));
t3is=t2.*((p3./p2).^(y-ones(size(p3))./y));

The dots in front of the operators perform element by element operations between matrices of the same size. You don't need it for + or -. And I'm pretty sure you've found out this by now: putting semi-colons behind each line suppresses the outputs, keeping your command window neat and managable.
 
You can simply do this...

t2*((p3/p2).^(y-1/y))

if you want each element of (p3/p2) raised to the power (y-1/y).