J'ai un tableau créé en MATLAB qui contient un certain nombre d'objets de type cellule qui contiennent des tableaux de doubles. Il s'agit essentiellement d'un tableau de cellules 1xn < et chaque cellule est un tableau de doubles. Ce que je veux faire est d'exporter en quelque sorte ceux-ci afin que je puisse ensuite insérer les données dans Java comme un tableau ragged de tableaux de type int. Une pensée sur la meilleure façon de faire cela?MATLAB: Obtention d'un tableau de cellules de MATLAB à Java
Répondre
Il est difficile de construire un tableau Java de primitives dans Matlab, parce que Matlab veut AutoBox revenir dans un tableau Matlab.
Ce que vous pouvez faire est de créer une classe Java pour vous aider, en utilisant les signatures de méthodes pour guider l'autoboxing de Matlab. Une couche d'enveloppe comme celle-ci peut être plus rapide et plus pratique qu'un aller-retour à travers une exportation de texte.
package test;
/**
* Class to help build Java arrays from Matlab.
*/
public class JavaArrayBuilder {
/**
* Assign an array into a larger ragged array
* @param array ragged array you're building
* @param i index into array
* @param subarray this gets autoboxed to int[] from Matlab
*/
public static void assignIntArray(Object[] array, int i, int[] subarray) {
array[i] = subarray;
}
}
Ensuite, vous pouvez l'appeler depuis Matlab comme ceci.
function ja = build_int_array
mynums = { 1:2, 1:5, 1:7 };
% Create a Java array of arrays
dummy = java.lang.Object();
ja = java.lang.reflect.Array.newInstance(dummy.getClass(), numel(mynums));
for i = 1:numel(mynums)
test.JavaArrayBuilder.assignIntArray(ja, i-1, mynums{i});
end
% Now you have a Java ragged array, albeit as Object[] instead of int[][]
Ensuite, vous devrez reconvertir à un tableau Matlab l'objet [] tableau int [] [] au sein de Java, parce que Matlab va unbox Java int [] []. Le garder comme Objet [] dans le M-code le protège.
Vous pouvez également créer une liste ou une autre collection à l'aide de wrappers similaires. Cela pourrait mieux s'imbriquer avec votre autre code Java, et Collections ne le fait pas dans Matlab.
Vous pouvez appeler Java depuis MATLAB. Faites une recherche google pour Java et MATLAB. Cela ressemble à un bon site pour vous: http://math.carleton.ca/old/help/matlab/MathWorks_R13Doc/techdoc/matlab_external/ch_java.html
Eh bien, je veux travailler à partir de Java et non Matlab donc ce que je l'ai été, j'adapté le code de cell2cvs par Sylvain Fiedler et a obtenu ce pour faire le travail, il obtient le réseau de cellules et génère un fichier txt.
function cell2txt(datName,cellArray)
% Writes cell array content into a *.txt file.
%
% CELL2CSV(datName,cellArray,seperator,excelVersion)
%
% datName = Name of the file to save. [ i.e. 'text.csv' ]
% cellarray = Name of the Cell Array where the data is in
%
% by Sylvain Fiedler, KA, 2004
% updated by Sylvain Fiedler, Metz, 06
% fixed the logical-bug, Kaiserslautern, 06/2008, S.Fiedler
seperator1 = ',';
seperator2 = '\n';
datei = fopen(datName,'w');
for z=1:size(cellArray,1)
for s=1:size(cellArray,2)
var = eval(['cellArray{z,s}']);
if size(var,1) == 0
var = '';
end
if isnumeric(var) == 1
var = num2str(var);
%fprintf(datei,seperator1);
end
fprintf(datei,var);
if s ~= size(cellArray,2)
fprintf(datei,seperator2);
end
end
end
fclose(datei);
Followup question here
- 1. MATLAB: Réduire les cellules de code dans l'éditeur de MATLAB
- 2. Equivalent numpy du tableau de cellules de MATLAB
- 3. Calculer l'union d'un tableau de cellules dans Matlab
- 4. Passer de Java à MATLAB
- 5. MATLAB: comment supprimer des éléments du tableau de cellules A du tableau de cellules B?
- 6. 'Tableau de tableaux' dans matlab?
- 7. Matlab: Affectation vectorisé de matrice double à matrice de cellules
- 8. Obtention d'une variable MATLAB (chaîne) à partir de C
- 9. Convertir un tableau de cellules en tableau de chaînes de caractères dans MATLAB
- 10. Création de tableaux de cellules imbriqués dans Matlab?
- 11. Erreur Matlab: ??? contenu de la cellule de référence à partir d'un objet tableau non cellules
- 12. Rappel API Matlab/Java
- 13. java et matlab Intégration
- 14. Matlab - impression de sous-tableau tableau à deux dimensions
- 15. matlab matrix fonctions en java
- 16. MATLAB: comparaison des tableaux de cellules de la chaîne
- 17. Renvoyer le tableau perl à MATLAB
- 18. Connexion à MongoDB à partir de MATLAB
- 19. Comment accéder aux tableaux de cellules imbriqués dans MATLAB?
- 20. MATLAB® - articles concaténer dans un réseau de cellules
- 21. Interaction simple avec une session MATLAB active de l'extérieur MATLAB
- 22. Appel de MATLAB à partir de C
- 23. Matrice de Python Matlab
- 24. de shapefile ESRI à Matlab
- 25. Passer un million de nombres de java à matlab?
- 26. matlab: recherche d'une longueur d'un tableau d'objets Java
- 27. Comment affecter une matrice vide aux éléments d'un tableau de cellules dans MATLAB?
- 28. Insérer des doubles dans un tableau de cellules dans un vecteur dans MATLAB
- 29. Dans matlab, comment appliquer une fonction de deux arguments à deux cellules de même longueur?
- 30. Quelle est la meilleure façon de traduire la génération d'un tableau de cellules multidimensionnel de Matlab à Clojure?
Je vais essayer pendant le week-end si j'ai le temps et revenir vers vous – Bar