Shorten code for a function

Hi
Please I have this function
fnP=@(a,i)(sum(a(i)>a(1:i))+0.5*sum(a(i)==a(1:i)))/i;
and I get generated result for each column
for instance
m1 = fnP(result, 1)
m2 = fnP(result, 2)
m3 = fnP(result, 3)
.
.
.
mn =fnP(result, n)
and so on
I will like a short code that will give me the m results without having to repeat m1, m2, m3 , m4... etc the code for 800 column datapoint
Thanks in advance
Tino

1 Comment

@Tino: using numbered variables is a sign that you are doing something wrong. It is simpler and much more efficient to use indexing into one array.

Sign in to comment.

 Accepted Answer

m=cell(5,1);
for k=1:5
m{k}=fnP(result,k);
end

3 Comments

madhan ravi
madhan ravi on 15 May 2019
Edited: madhan ravi on 15 May 2019
Tino: Why was it accepted mistakenly? Doesn’t work?
Hi Madhan
How do I refer to the cell of m
for instance I want to want to use the code
x = m(: , :) ^ (2 * 5.2)
I am getting the error. Unable to use value of type 'cell' as an index
How do I go about it
thanks in advance
x = [m{:}] .^ (2 * 5.2)

Sign in to comment.

More Answers (0)

Categories

Find more on Elementary Math in Help Center and File Exchange

Products

Release

R2019a

Tags

Asked:

on 15 May 2019

Commented:

on 15 May 2019

Community Treasure Hunt

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

Start Hunting!