Filter löschen
Filter löschen

Integration of MATLAB function - NOT Mathematic function.

3 Ansichten (letzte 30 Tage)
Echo-6
Echo-6 am 2 Sep. 2016
Kommentiert: Walter Roberson am 3 Sep. 2016
Hi, I have three MATLAB script, with one serve as a main class. I want to integrate an expression which contain two other functions,
Code:
x = 0:180;
TB = integral(getCt_Theta(x)*getQ_2(x),1,180);
Where: getCt_Theta(x), is a function to calculate coefficient of lift, will return one values for each inputs Same goes for getQ_2(x), The reason for this task is to evaluate half revolution of the turbine. Should I do symbolic first? or should I Simulink it?
Thanks everyone!
  2 Kommentare
Walter Roberson
Walter Roberson am 2 Sep. 2016
Your x is the integral values from 0 to 180, but you mention x in your integral() and you want the integral to be over 1 to 180. Is your x intended to be continuous or discrete, and is it intended to be 0 to 180 or 1 to 180 ?
Echo-6
Echo-6 am 3 Sep. 2016
Bearbeitet: Echo-6 am 3 Sep. 2016
Hi Walter, My bad, I intent to integrate from 0-180. The raw data one of the function access to is from a CSV file, interpolated. So it's continuous.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Walter Roberson
Walter Roberson am 3 Sep. 2016
f = @(x) getCt_Theta(x).*getQ_2(x)
and integral that:
integral(f, 0, 180)
However, this depends upon getCt_Theta and getQ_2 accepting vectors of values. If they cannot, if they can only accept scalars, then you need
integral( @(X) arrayfun( f, X), 0, 180)

Weitere Antworten (1)

Pawel Ladosz
Pawel Ladosz am 2 Sep. 2016
You could try and change your matlab function to function handle by:
getCt_Theta_fun=@getCt_Theta
Then you can use this is as input to integral. However I am not sure whether it would deal with multiplication of the function handles.
  3 Kommentare
Echo-6
Echo-6 am 3 Sep. 2016
Bearbeitet: Walter Roberson am 3 Sep. 2016
Dear Adam, I have try the function handle by using only getQ_2 first. Just to prove the concept. The function is valid from 0-180, I have check it.
Code I try
f = @(theta) getQ_2;
TB = integral(f,1,180);
I got the following error-
Not enough input arguments.
Error in getQ_2 (line 2)
theta= deg2rad(theta);
Error in Int_test_1>@(theta)getQ_2
Error in integralCalc/iterateScalarValued (line 314)
fx = FUN(t);
Error in integralCalc/vadapt (line 132)
[q,errbnd] = iterateScalarValued(u,tinterval,pathlen);
Error in integralCalc (line 75)
[q,errbnd] = vadapt(@AtoBInvTransform,interval);
Error in integral (line 88)
Q = integralCalc(fun,a,b,opstruct);
Error in Int_test_1 (line 5)
TB = integral(f,1,180);
Any ideas? And Thanks everyone!

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Wind Power finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by