Create unknown amount of vectors automatically (no cell-arrays allowed due to compatibility issues with Python)

3 views (last 30 days)
I am looking to pass numeric data from Matlab to Python. As far as I'm concerned, the API does not support any kind of container, so no cells or structs are allowed. The idea is to have a function passing multiple vectors with each vector having info on one object (a car). The number of cars, i.e. the number of vectors to be created, is not known before runtime.
varargout creates a cell-array and is therefore unsuitable;
In Python, I can declare
and will get any number of arguments I create during runtime. Is there something similar in Matlab or is there any other trick?
I have considered combining all data into one vector and un-combining it once it has reached Python, this is not beautiful though.
(Better yet: Does someone know a container-type format which passes through R2018b-Python-API.)
Thank you in advance
Unsupported MATLAB Types for 2018 Python API
  • Multidimensional char or cell arrays
  • Structure arrays
  • Sparse arrays
  • categorical,table,containers.Map,datetime types
  • MATLAB objects
  • meta.class (py.class)
dpb on 21 Oct 2021
Then it would seem you're forced to use a looping construct with 1D arrays or the one vector approach.
I don't see the latter as being that big a deal, surely Python has the facility to reshape a vector, doesn't it? If you either prepend the size info to the data or pass it separately, it wouldn't seem difficult (conceptually, anywhooo...)

Sign in to comment.

Answers (1)

Pranjal Kaura
Pranjal Kaura on 27 Oct 2021
You could go through the link 'Pass Data to Python', particularly the 'Passing Matrices and Multidimensional Arrays' subsection to know more about passing multidimensional arrays from MATLAB to python.
Hope this helps!

Community Treasure Hunt

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

Start Hunting!

Translated by