2016-03-27 1 views
1

J'ai besoin de créer une matrice 3D ou une matrice dans Matlab qui sera ensuite supportée dans le nœud Mathscript de LabVIEW. Toutes les valeurs dans le tableau 3D doivent être initialisées à 0 et les tailles le long des 3 dimensions sont des variables précalculées différentes.Création de matrices 3D dans Matlab sans fonction zéros à 3 arguments supportée

J'ai essayé ce qui suit: X = zeros(a,b,c); qui fonctionne bien pour Matlab, mais dans LabVIEW, la fonction zéros ne prend en charge que 1 ou 2 arguments.

Alors j'ai essayé en créant avec une boucle:

for i = 1 to c 
    X(:,:,i) = zeros(a,b); 
end 

Cependant, ni le support d'indexation de tableau 3 indices. Je reçois l'erreur:

"You can specify only one or two index arguments, such as a(1, 2)."

Avez-vous des idées sur la façon de créer un tableau 3D ne pas utiliser les zéros fonctionnent avec 3 arguments et ni l'indexation de tableau avec 3 arguments?

Répondre

1

Une recherche rapide en ligne, j'ai trouvé this page pris en charge data types dans décrivant LabVIEW MathScript:

Scalars and One- and Two-Dimensional Arrays

  • Single-precision, floating-point numeric
  • Double-precision, floating-point numeric
  • Extended-precision, floating-point numeric
  • Complex single-precision, floating-point numeric
  • Complex double-precision, floating-point numeric
  • Complex extended-precision, floating-point numeric
  • 8-bit signed integer numeric
  • 16-bit signed integer numeric
  • 32-bit signed integer numeric
  • 64-bit signed integer numeric
  • 8-bit unsigned integer numeric
  • 16-bit unsigned integer numeric 32-bit unsigned integer numeric
  • 64-bit unsigned integer numeric
  • Boolean
  • Structure

Il semble donc que les tableaux 3D (ou plus) DiMS ne sont pas pris en charge.

Vous pouvez également vérifier en vérifiant la documentation de la fonction zeros.

+0

Eh bien, c'est un énorme problème pour moi en ce moment. Je ne pensais même pas qu'ils ne sont pas pris en charge. Avez-vous des idées d'une solution de contournement qui pourrait "simuler" en quelque sorte les tableaux 3D? Sans cette structure, tout mon algorithme est tué. – rafanadal

+1

@rafanadal Pas sûr, cela dépend de votre application .. Peut-être que vous pouvez aplatir la troisième dimension et l'insérer horizontalement comme matrice 2D. Donc, au lieu de créer 'arr3d = zéros (m, n, p)' vous créez 'arr2d = zéros (m, n * p)'. Bien sûr, vous devrez ajuster toute l'indexation dans ce tableau, donc à chaque fois que vous avez besoin d'accéder à 'arr3d (:,:, i)' vous découpez la matrice 2d en 'arr2d (:, (i-1) * n + 1: i * n) ' – Amro

+0

C'est une bonne idée. J'aime ça. Comme les données de toutes les cellules sont indépendantes et que les 3 dimensions ne sont utilisées que pour l'indexation correcte, l'aplatissement devrait fonctionner, j'ai juste besoin de faire attention à ne pas gâcher l'indexation. Merci! – rafanadal