Integration of MATLAB function - NOT Mathematic function.

조회 수: 2 (최근 30일)
Echo-6
Echo-6 2016년 9월 2일
댓글: Walter Roberson 2016년 9월 3일
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
Walter Roberson
Walter Roberson 2016년 9월 2일
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 2016년 9월 3일
편집: Echo-6 2016년 9월 3일
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.

댓글을 달려면 로그인하십시오.

채택된 답변

Walter Roberson
Walter Roberson 2016년 9월 3일
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)
  댓글 수: 1
Echo-6
Echo-6 2016년 9월 3일
Awesome man! Now I got the integration result! Thanks!

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Pawel Ladosz
Pawel Ladosz 2016년 9월 2일
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
Echo-6
Echo-6 2016년 9월 3일
편집: Walter Roberson 2016년 9월 3일
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!

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Matrix Computations에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by