Calculations using Inline Functions
조회 수: 4 (최근 30일)
이전 댓글 표시
Hello... I'm still a beginner when it comes to using MATLAB and I can't seem to figure this equation out.
My Code:
t = (-100:0.01:100);
g = inline ('(exp(-t).*(cos(2*pi*t))).*(t>=0)','t');
h = inline ('g((2*t)+1) + g(1-t)','t','g');
E = inline('((g(2*t+1) + g(1-t)).^2)','t','g'); % square of the function h(t)
En = quad(E(h,t),-100,100);
En (E,t)
Error:
Error using inlineeval (line 14)
Error in inline expression ==> ((g(2*t+1) + g(1-t)).^2)
Undefined function 'mtimes' for input arguments of type
'inline'.
Error in inline/subsref (line 23)
INLINE_OUT_ = inlineeval(INLINE_INPUTS_,
INLINE_OBJ_.inputExpr, INLINE_OBJ_.expr);
Error in BA2 (line 27)
En = quad(E(h,t),-100,100);
Please and thank you.
댓글 수: 0
채택된 답변
Adam
2015년 2월 13일
편집: Adam
2015년 2월 13일
I've never used 'inline' and didn't even know it existed, but the documentation says:
'inline will be removed in a future release. Use Anonymous Functions instead.'
so I would suggest not using inline if you intend to keep your code for future usage too. I use anonymous functions a lot which is probably why I never knew about the 'inline' function.
It looks like you have too many closing parenthesis in your definition of 'g' though.
Try using the following instead as an anonymous function:
g = @(t) exp(-t) .* cos( 2 * pi * t ) .* ( t >= 0 );
h = @(t) g(( 2 * t ) + 1 ) + g( 1 - t )
E = @(t) h(t).^2
I think that should work for E...no need to define it in terms of g if it is just h squared.
Then I assume this should give the right answer:
En = quad( E, -100, 100 );
Again though the 'quad' function says it will be removed in a future release, but maybe if you are using an old Matlab you don't have the suggested replacement function.
댓글 수: 3
Adam
2015년 2월 13일
I'm not too familar with quad or integral in terms of how you feed in the single argument to the 'E' function, but:
En = quad( E, -100, 100 );
certainly gave a result for me without error. Whether it was a correct result or not I'm not sure.
Usually you would just call E as:
res = E(t);
but when it is being passed as a function handle to 'quad' or 'integral' that function appears to expect format more like the above.
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Function Creation에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!