Bonjour,

je suis confronté à un gros problème qui est sans doute très simple à résoudre pour les experts mais je débute avec matlab et avec la programmation ...

Concrètement:
Soit une matrice M(n,m) (en fait n=m=500) soit 250 000 cellules
Pour certaines de ces cellules j’ai des informations provenant de deux fichiers distincts.

Le premier fichier, le fichier A, correspond à un vecteur de 250 000 lignes chaque cellule contient une valeur numérique. Ce fichier permet donc de caractériser l’ensemble de mes cellules de la matrice M.

Le deuxième fichier, le fichier B, correspond à un tableau avec 100 000 lignes et 9 colonnes.
Les deux premières colonnes sont les coordonnées dans ma matrice M de 100 000 cellules prises au hasard parmi les 250 000 cellules.
Les autres colonnes sont des indices (valeur numérique), des descriptions (chaîne de caratères ou code alphanumérique) caractérisant les mêmes 100 000 cellules.
J’ai importé ce deuxième fichier B
Avec la formule

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
B = textscan(fopen('fichierB'),'%d %d %d %d %s %s %d %s %s','delimiter','\t');
J’obtiens un tableau
Avec 9 colonnes qui correspondent à
Coord X coord Y indice1 indice2 descrition1 description2 nbr1 description3 description4

Ce que je souhaite c’est « ploter » ou récupérer dans un tableau les valeurs du fichier A en fonction de certaines conditions (sur l’ensemble des colonnes) dans le fichier B (mon tableau) mais sans loupe.

J’ai créer pour cela un vecteur Vlien qui me permet d’avoir la correspondance entre les deux fichiers.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
Vlien = B{1}+1+B{2}.*500;
Ensuite j’arrive à ploter mes valeurs de A en fonction de l’indice1 (colonne 3 du tableau B) en prenant les valeurs de la colonnes 4 correspondantes pour abscisses et les valeurs du vecteur A correspondantes comme ordonnées.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
Valeur_indice1=4; %% l’indice1 correspond à la colonne 3 du fichier B
figure;
plot(B{4}(B{3}==Valeur_indice1, A(Vlien(B{3}==Valeur_indice1 )), '.')
J’ai également pu filtrer mes données en fonction des valeurs de la colonnes 4 qui sont également des valeurs numériques.

Le problème c’est que je cherche à poser des conditions sur les colonnes avec autre chose que des chiffres. Mais j'obtiens des erreurs...
Alors j’ai essayer d’utiliser des fonctions comme strcmp pour remplacer le == mais je n’ai pas réussi à faire fonctionner. Cela me donne au mieux le numéro de la ligne dans le tableau B de toutes les occurrences.

Malgré plusieurs tests, j’obtiens des
Code : Sélectionner tout - Visualiser dans une fenêtre à part
??? Undefined function or variable...
ou des
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
??? Undefined function or method 'eq' for input arguments of type
'cell'.
J’atteins là les limites de mes compétences et je pense avoir besoin de votre aide. Alors si quelqu’un à une idée, une suggestion ? je l’en remercie d’avance.

A très bientôt, j’espère

H.