J'ai un énorme fichier CSV qui a un mélange de types de données numériques et de texte. Je veux lire ceci dans une seule matrice dans Matlab. Je vais utiliser un exemple plus simple ici pour illustrer mon problème. Disons que j'ai ce fichier CSV:Comment lire les champs de texte dans MATLAB et créer une seule matrice
1,foo
2,bar
Je suis en train de lire ceci dans MatLab en utilisant:
A=fopen('filename.csv');
B=textscan(A,'%d %d', 'delimiter',',');
C=cell2mat(B);
Les deux premières lignes fonctionnent très bien, mais le problème est que texscan ne crée pas Matrice 2x2; à la place, il crée une matrice 1x2 avec chaque valeur étant un tableau. J'essaie donc d'utiliser la dernière ligne pour combiner les tableaux en une seule grande matrice, mais cela génère une erreur car les tableaux ont des types de données différents.
Existe-t-il un moyen de contourner ce problème? Ou une meilleure façon de combiner les tableaux?
Je les combine afin de créer une matrice qui servira de variables dépendantes dans une régression MCO.J'ai un certain nombre de champs de texte qui devront être convertis en variables fictives (par exemple, les champs qui disent "vrai" ou "faux" seront convertis en 1 ou 0). J'avais l'intention de coller le texte dans la matrice, puis de le parcourir et de convertir les champs si nécessaire. Mais selon votre suggestion, peut-être est-il préférable de convertir les choses pendant qu'elles sont encore dans les tableaux, puis de les combiner? Après que tout a été converti, est-il conseillé d'utiliser cell2mat pour combiner? Merci Doug! – Jack7890
Vous pouvez garder ces derniers dans une structure: data.num = num = donnees.txt txt Cela les garder dans un récipient, et vous permettent de les renvoyer comme des noms plus intuitifs. Les mettre dans un tableau de cellules rendrait simplement la syntaxe pour les lire et les manipuler plus difficilement sans autre avantage que de les combiner. J'irais avec la structure. – MatlabDoug
@ Jack7890: Si vous voulez * vraiment * combiner les tableaux individuels dans une matrice, vous devez d'abord convertir tout le contenu du tableau en un même type de données. Par exemple, disons que le tableau ['foo'; 'bar'] stocké dans B {2} devient [3; 4]. Pour concaténer horizontalement les tableaux en [1 3; 2 4], faites ce qui suit: C = [B {:}]; Pour concaténer verticalement les tableaux en [1; 2; 3; 4], faites ceci à la place: C = vertcat (B {:}); – gnovice