Registered Member
|
Hi
I am struggling with using cwise operations. I want to create a matrix from another one by applying an elementwise matrixA = matrixB < scalarC; MatrixXd B; double c; MatrixXd A = B.cwise() < c; results in a compilation error YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY I have seen in the API-doc of cwise that the operator is defined. To my understanding it is specialized for evaluating purposes. Does anyone know the missing hint in transforming the resulting CwiseBinaryOp object to a matrix? |
Registered Member
|
the result is a matrix of bools, so it complains about different scalar types. you can cast() or select().
PS. strange, this operator isn't mentioned in the online docs, only the one taking a second xpr is mentioned here. http://eigen.tuxfamily.org/dox/classEigen_1_1Cwise.html Could that be your problem?
Last edited by bjacob on Thu Apr 23, 2009 10:50 am, edited 1 time in total.
Join us on Eigen's IRC channel: #eigen on irc.freenode.net
Have a serious interest in Eigen? Then join the mailing list! |
Registered Member
|
Thanks! The cast works fine. It seems I did not understand the identity of CwiseBinaryOp
It is there: http://eigen.tuxfamily.org/dox/classEig ... b69fe2e55a |
Registered Member
|
This one takes a matrix as second argument. Your notation seemed to imply you were passing a scalar (scalarC). Anyway, good if it's now working for you.
Join us on Eigen's IRC channel: #eigen on irc.freenode.net
Have a serious interest in Eigen? Then join the mailing list! |
Registered Member
|
I hope you can help me once more.
I am looking for an operation that gives me a rowwise sum, eg. MatrixXd A(4,3); MatrixXd b(4,1); MatrixXd C = A+b.col(0); Then C should contain C(i,k) = A(i,k)+b(i) Is that somehow possible? |
Registered Member
|
At the moment, we don't seem to have anything for that. You can always do
but this is quite inelegant. What we need is to have "stacking" expressions and I remember that this has already been asked for. I'll have a look at it, when I can.
Join us on Eigen's IRC channel: #eigen on irc.freenode.net
Have a serious interest in Eigen? Then join the mailing list! |
Registered Member
|
Thanks for answering. I can help myself with dirty hacks until this feature arrives. Thanks! |
Moderator
|
it is already there ! it is called replicate. I think you can do something like:
c = a + b.replicate(1,a.cols()); or c = a + b.rowwise().replicate(a.cols()); for more details have a look at the doc. |
Registered Member
|
oh, i'm so out of date :-S
Join us on Eigen's IRC channel: #eigen on irc.freenode.net
Have a serious interest in Eigen? Then join the mailing list! |
Registered users: Bing [Bot], Evergrowing, Google [Bot], rblackwell