Fractionner une chaîne de caractères<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Salut! Je veux analyser une chaîne de caractères. J'ai 202 bits binaires dans ma chaîne et je souhaite couper cette chaîne de moitié. Je pense que je pourrais trouver la longueur de la chaîne et peut-être lui faire renvoyer les valeurs sur un certain nombre de caractères. Je ne sais tout simplement pas comment l'utiliser pour le réduire de moitié et avoir deux colonnes de 101 bits chacune. Et après avoir obtenu cela, je veux séparer chaque bit dans sa propre colonne. Je veux donc 101 colonnes de « 1 » ou de « 0 ». Je ne sais tout simplement pas comment l'analyser par nombre de caractères.
Merci pour toute aide!!
Re : Fractionner une chaîne de caractèresGénéralement, il existe une dépendance entre la façon dont vos données sont organisées et ce qu'une plate-forme JMP vous offrira (ou non).
Je ne suis pas sûr d'avoir complètement compris ce que vous recherchez, mais si vous ajoutez ce code à celui de Craige ci-dessus, je pense que vous vous en rapprocherez :
dt2 = dt << Transposer (
colonnes ( :c1, :c2, :c3, :c4, :c5, :c6, :c7, :c8, :c9, :c10 ),
Tableau de sortie ( "Transposition de l'exemple" )
);
dt2 << Générateur de graphiques (
Afficher le panneau de configuration ( 0 ),
Variables(
X( :Étiquette ),
Y( :Ligne 1),
Y( :Ligne 2),
Y( :Ligne 3),
Y( :Ligne 4),
Y( :Ligne 5)
),
Éléments(Position( 1 , 1 ), Barre( X, Y, Légende( 12 ) ) ),
Éléments(Position( 1 , 2 ), Barre( X, Y, Légende( 13 ) ) ),
Éléments(Position( 1 , 3 ), Barre( X, Y, Légende( 15 ) ) ),
Éléments(Position( 1 , 4 ), Barre( X, Y, Légende( 23 ) ) ),
Éléments(Position( 1 , 5 ), Barre( X, Y, Légende( 27 ) ) )
);
Vous devrez ajuster les valeurs de la colonne « Label » pour correspondre aux tensions, et vous pouvez le faire avec « Recode » ou via un peu plus de JSL. Une fois que vous avez obtenu ce que vous voulez, il existe peut-être un moyen plus direct d’y parvenir.
Re : Fractionner une chaîne de caractèresMerci! Cela a beaucoup aidé. Malheureusement, ce n'était que le début de ce que je voulais faire, et je ne sais pas comment faire le reste...
J'ai donc vraiment besoin d'indiquer quelle moitié de la chaîne je regarde. Les 100 lignes de chaînes que je divise sont pour les mêmes données, et toutes les premières demi-chaînes ont le même nom, tout comme les secondes demi-chaînes. Et une fois que j’ai cela, je dois représenter graphiquement les deux moitiés séparément. Lorsque j’ai essayé de le représenter graphiquement manuellement dans JMP, cela ne s’est pas déroulé comme je l’espérais. La façon dont j'ai effectué cette analyse s'est fait via Excel car il affichait le graphique comme je le voulais. Fondamentalement, j'ai juste besoin de toutes les nouvelles colonnes dans lesquelles les bits vont (dans ce cas, ce sont des tensions) le long de l'axe des x et les données le long de l'axe des y.
Le seul problème est que je n'arrivais pas à comprendre comment faire cela dans JMP. De l'aide?
Merci beaucoup!!
Re : Fractionner une chaîne de caractèresEssaye ça
// les données d'entrée sont une chaîne de caractères 1 et 0 représentant des bits
chaîne = "11110000111000110010" ;
// divise la chaîne en deux au milieu
// cette sous-chaîne commence au caractère 1 et s'étend sur la moitié de la longueur
firsthalf = Substr( chaîne, 1, Longueur( chaîne ) / 2 );
// cette sous-chaîne commence juste au-delà de la précédente et du
// la longueur implicite va jusqu'à la fin
seconde moitié = Substr( chaîne, 1 + Longueur( chaîne ) / 2 );
// les bits 1 et 0 vont un par colonne
ncols = Longueur (première moitié);
// démarre une nouvelle table
dt = Nouvelle table( "exemple" );
// ajoute des colonnes avec des noms comme "c3" pour chaque bit
For( i = 1, i <= ncols, i++, // l'opérateur || joint deux chaînes
dt << New Column( "c" || Char( i ) ) // i est un nombre, char crée une chaîne
);
// crée une fonction d'assistance pour ajouter des bits à une ligne dans dt
adddata = Function( {bits}, // paramètre à fonction
{i, c}, // variables locales
dt << addrows( 1 ); // la fonction sait utiliser dt
Pour( i = 1, i <= Longueur( bits ), i++,
c = Colonne( dt, "c" || Char( i ) ); // comme ci-dessus
dt:c = Num( Substr( bits, i, 1 ) ); // met le bit dans la colonne
);
);
// chaque appel à adddata met une ligne de bits dans dt
adddata(première moitié);
adddata(seconde moitié);
adddata( "1010101010" );
adddata( "1111111111" );
adddata( "0000000000" );
