How to overload all functions and operators of a new class?
8 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hi, All,
I would like to design a class of multi-dimensional arrays that automatically does a number of things. In particular, automatic array extension as the "bsxfun" function does, only without having to call "bsxfun" explicitly. For example: A=myclass(rand(4,4)); b=myclass(rand(4,1)); C=A.*b; where C will be an 4x4 array given by multiplying elementwise each column of A by b, just like C=bsxfun(@times,A,b) will produce for generic arrays A and b.
Moreover, the code L=log(A); should produce logarithm of each element of A, where L is of course an array of myclass. I hope ALL compatible functions and operators should simultaneously be overloaded. How can I do that?
This class potentially could SIGNIFICANTLY simplify MOST of my past MATLAB coding experience. However, So far I have not been able to do that. I have to overload every specific functions one at a time, which is too tedious and error-prone.
Thank you for any answers.
Jin
0 commentaires
Réponse acceptée
LY Cao
le 26 Mar 2016
for r2015b or r2016a, you can do this:
builtin('_useSingletonExpansion',1) % undocumented
a = rand(4); b = rand(4,1);
c = a.*b; % bsxfun(@times,a,b)
d = a + b; % bsxfun(@plus,a,b)
e = a./b; % bxfun(@rdivide,a,b)
f = a == b; % bsxfun(@eq,a,b)
g = atan2(a,b); % bsxfun(@atan2,a,b)
h = a.^b; % bsxfun(@power,a,b)
i = mod(a,b); % bsxfun(@mod,a,b)
k = a & b; % bsxfun(@and,a,b)
......
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Multidimensional Arrays dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!