Thanks for the A2A, Sahil Juneja.
Like Brock McKean says, Matlab pretends to be multi-paradigm. It is optimized for imperative and procedural strongly typed operations. It supports OO, and extends to C/Cpp and Java. Contrary to popular opinion, Matlab is not strictly an interpreted language and does not always use JIT compilation. It uses an opaque optimization scheme that relies on passing functionality to preconstructed binaries that exploit whatever multithreading and multi-core architectures your h/w supports (That's one of the reasons why Matlab's raw numeric calculation speed is on the order of that obtained from optimized C code).
It implements a dynamic type system but it shares attributes with both weak (type punning allowed..) and strongly typed (..but not always; implicit typecasting for sensible datatypes) languages.
Matlab hides most core functionality from users by undocumenting and providing an expansive, but still a walled garden. The core is also fast-moving, so performance tweaking is difficult (also seldom necessary).
"many of the versions in recent years are growing into a more OOP direction"
There is a noticeable transition in Matlab's use of object based syntax and hierarchy (~2008-2011, so not that new). But that is only meant for internal devops; The end users are still expected to use it as a procedural language for the most performant code. OO is a second class citizen (and rightly so) in the Matlab hierarchy of things.