# Matlab functions - summation

3 views (last 30 days)
Michael on 28 Nov 2015
Answered: Arnab Sen on 30 Dec 2015
Hey,
I'm a beginner in Matlab.
I try at the moment to transfer a code which was written in Mathematica. There, I have many different functions w(k), e(k), f(k), etc. and another function X(w(k),e(k),f(k)). Let's say for simplicity that this function X(w(k),e(k),f(k)) does the following:
X(w(k),e(k),f(k))=Sum(w(k),k)+Sum(e(k)*f(k))
I tried a simpler version of this as follows:
function [wk,ek,S] = myfun(U,n,J,a)
ek = 2*J*(1-cos(k*a));
wk = sqrt(e(k)*(e(k)+ 2*U*n));
S = Sum??
end
The problem now is that I cannot even calculate ek and wk because I have to give Matlab a value of k? Does anyone know a possible to implement this?

Arnab Sen on 30 Dec 2015
My understanding is that you would like to have some alternative for symbolic math in 'Mathematica' for function call.
From the code you have provided I notice that you try to store the reference of the function into a variable what in MATLAB is called 'function handle'. You can do this by creating 'anonymous function' and store their handle to the variable.
The following code illustrates this approach:
function [wk,ek,S] = myfun(U,n,J,a)
k=2;
ek = @(k)2*J*(1-cos(k*a));
ek(k);
wk = @(k)sqrt(ek(k)*(ek(k)+ 2*U*n));
wk(k)
S =@(k)ek(k)+wk(k);
S(k)
end
Now, you do not need to provide the value of 'k' to execute the function. For more details about 'anonymous function' and 'function handle' refer to the following links: