Using latex command with anonymous functions

I want to convert a bunch of simple symbolic expressions to latex
e.g.,
syms x;
B = @(x)B(x)
latex(diff(B,x)) produces latex output
but
latex(B(x)) produces an error.
Of course, if I had
B = sym('B(x)')
latex(B(x))
would do what I want it to do, i.e., output B(x) but then
latex(B(y))
would produce an error

답변 (6개)

Alexander
Alexander 2012년 8월 14일

1 개 추천

In R2012a I can do this:
>> syms x y B(x)
>> latex(B(x))
ans =
B\!\left(x\right)
>> latex(B(y))
ans =
B\!\left(y\right)
>> latex(diff(B(x)))
ans =
\frac{\partial}{\partial x} B\!\left(x\right)
Matt Fig
Matt Fig 2012년 8월 13일

0 개 추천

B = sym('B(x)');
latex(B)
latex(subs(B,'x','y'))
Leo Simon
Leo Simon 2012년 8월 13일

0 개 추천

Thanks to Matt and Walter for responses. Walter's answer didn't work; according to the documentation, latex requires a symbolic argument. Matt's answer did work, but I'd really like something more general if somebody has one, specifically, I'd much prefer to be able to define B as an anonymous function of the symbolic variable x, and then latex the output, e.g., i'd like to be able to write
syms x;
B(x) = @(x)B(x)
and have
latex(B(x))
return
B\left(x\right)
Obviously this doesn't happen, but I'm hoping that some modification of my proposed command would work.
Oleg Komarov
Oleg Komarov 2012년 8월 13일

0 개 추천

Interesting case, do you define B in a recursive way on purpose?
However the error is clear, B doesn't exist at the moment of the call B(x).
To make it more clear:
syms x
f = @(input) B(input);
f(x)
Undefined function 'B' for input arguments of type 'sym'.
Error in @(input)B(input)
Leo Simon
Leo Simon 2012년 8월 13일

0 개 추천

Well, I've tried defining B as a symbolic variable first, but that doesn't help, e.g.
clear all ; syms x B ; f= @(input)B(input) ; f(x)
Which just generates the infuriating, opaque, ubiquitous message
??? Error using ==> mupadmex
Error in MuPAD command: DOUBLE cannot convert the input expression into a double array.
If the input expression contains a symbolic variable, use the VPA function instead.
So I'm not sure how to make B exist any other way?

댓글 수: 2

Matt Fig
Matt Fig 2012년 8월 13일
Leo, please comment on the answer you are engaging. Don't just keep adding 'answers' that aren't really answers to the OP. Thanks.
Leo Simon
Leo Simon 2012년 8월 14일
Ok, sorry

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

질문:

2012년 8월 13일

Community Treasure Hunt

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

Start Hunting!

Translated by