リストと行列の使用このデモでは、リストと行列の基本的な機能のいくつかを見ていきます。 それでは、リストから始めます。 そして、新しいスクリプト エディタ ウィンドウを取得します。 繰り返しますが、キーボード ショートカットは Ctrl+T です。 そして、サイズを変更して再配置します。 先に進みましょう、日誌の前に丸太を持ってきましょう。 そして、リストと呼ぶ変数を作成します。 それをリスト関数の結果に割り当てます。 単語リストの開き括弧で、変数 a、b を使用します。 そして、平方根を計算します。これが sqrt で、括弧内です。 そして、大文字とスペースを入れるためだけにフォーマットを変更します。 そして、スクリプトを実行します。 したがって、ログに表示されるのは、3 つの要素を持つリストが割り当てられたという情報だけです。 リストにカーソルを合わせると、入力した項目が評価されずに保存されていることがわかります。 つまり、2 つの変数と平方根関数です。 Script Editor ウィンドウの新しい行で、リスト内の項目の評価を要求します。 では、eval list 開き括弧 my list と入力します。 そして、その行だけを実行します。 そして、そこに評価結果が表示されます。 現在、私のリストは未評価のままです。 したがって、eval リストの結果を操作したい場合、リストの評価結果を新しいリストに割り当てることが 1 つの方法です。 ただし、添字を使用してリストから評価されたアイテムを操作する方法は他にもいくつかあります。 それについて話す前に、一般的なリストの添字について話させてください。 では、新しい行に移動します。 そして、リストを左角かっこで入力します。 a と入力して、リストの 2 番目の項目を抽出します。 その行だけを実行すると、未評価の項目が表示されます。 では、評価結果が必要な場合はどうすればよいでしょうか? さて、私は実際にここで 2 番目の行に戻ることができます。 リストの評価を要求し、その結果に添え字を付けることができます。 そこで、開き角かっこ a をそこに入れ、角かっこを閉じます。 そして、デスクトップ コンピューターのキーボードの右端にある数字キーパッドの Enter キーを使用して、その行だけをもう一度実行します。 そこで、評価されたリストに添字を付けて、その結果を取得しました。 リストの変更について話しました。 だから新しいラインに行きたい。 そして、insert into を使用します。 したがって、insert into はリストをその場で変更します。 ですから、括弧を開きます。 そして、どのリストを変更していますか? まあ、それは私のリストに保存されています。 それが最初の引数です。 何を追加したいですか? ジョンという名前を追加します。 というわけで文字列です。 そして、そのコンマをそこに入れず、3 番目の引数を指定しないと、リストの最後に配置されます。 しかし、コンマを入れて、オプションの 3 番目の引数として a を入力して、2 番目の位置に配置します。 そして、その行だけを実行します。 実際に挿入しても、ログには何も返されません。 しかし、スクリプトに表示されるリストの任意の場所にカーソルを合わせると、John という名前が 2 番目の位置に表示されるように変更されていることがわかります。 リストがあるとします。リストは、JSL 関数によって返されたものか、ユーザー入力の収集に使用されたものなどです。 そして、削除できるように、リスト内のアイテムを見つける必要があります。 私はそれがリストにあることを知っています. リストにあるかどうかを最初にクエリしたい。 もしそうなら、私はそれを削除できるようにしたい. そこで、アイテム John の位置を格納する変数を作成します。 私はそれをposと呼びます。そして、contains 関数の結果を代入します。 そのため、contains と文字列を見てきました。 今ではリストが含まれています。 リストで John という文字列を探していますが、もちろん大文字と小文字が区別されます。 この行を実行すると、返されて変数 pos に格納される結果は次のようになります。たとえば、リストからそれを削除したい場合は、開いた括弧から remove と入力します。 私たちは私のリストを探しています。 そして、最初の引数の後に何も指定しなかった場合に得られる最後の項目を削除する代わりに、変数 pos を使用します。そして、私はその行を実行します。 そして、削除された要素の数に関係なくリストを返します。 デフォルトでは、2 番目の引数で指定された位置から 1 つ取得します。 それで、その文字列を含むリストを取得します。 また、リストのその要素をスクリプトの他の場所で使用したい場合は、実際にその結果を独自の変数に割り当てることができます。 また、返されたリストからこれを下付き文字で抽出することもできます。 もう一度ラインを走らせます。 pos に格納される値は同じままです。 そして、 line And を実行すると、リストにない文字列が返されました。 リストにカーソルを合わせると、以前の値に戻っていることがわかります。 マトリックスについて少し話しましょう。 ログを右クリックしてクリアし、[スクリプト エディタ] ウィンドウですべてを選択して削除します。 だから私は、マトリックスの私の行になる人々をシミュレートすることから始めます。 そして、それらの人々はそれぞれ、サイコロを5回、六面体のサイコロを振ります。 それが私のコラムになります。 乱数ジェネレーターでこれらを生成するだけですが、特定のシード値から始めて、従えばまったく同じ乱数が得られるようにします。 そして、指定された数の行と列を持つ行列を作成する j 関数と呼ばれる関数を使用します。 これらは最初の 2 つの引数であり、次に行列の値となるもの、つまり 3 番目の引数です。 そこで、ランダム リセット関数を の値で使用します。繰り返しますが、これは乱数発生器の開始シードを指定しているだけです。 それでは実行してみます。 次に、新しい行で変数 m を作成します。この変数には、j 関数の結果が割り当てられます。 繰り返しますが、人物をシミュレートする行の数から始めて、次に列の数で、6 面ダイスを 5 回転がします。 そして、引数でランダム整数関数を使用します-- から始めて、 までの乱数を選択します そして、繰り返しますが、これを少し見栄えを良くするために再フォーマットできます-- おっと、再フォーマットする代わりに実行しましたそれ。 まだリフォームできます。 では行きましょう。 だから今も走っている。 対数を少し大きくすると、行ごとの行列が表示されていることがわかります。 そして、そのマトリックスの要素をどのように参照すればよいでしょうか? さて、私たちは添え字を使います。 というわけで、新しい行に移動します。 5 人目がサイコロを 3 回振ったときに何を出したかが気になるかもしれません。 変数名 m に添字を付けるので、m と角括弧を付けます。行番号はコンマ、列番号は角かっこを閉じてその行を実行します。 そして、3 番目のロールの 5 人目が A をロールし、実際にそれを確認できます。 1、2、3、4、5 番目の列、3 番目のサイコロがあります。 では、行全体または列全体を検索したい場合はどうすればよいでしょうか? さて、ここに新しい行がありますが、実際には、同じ行を使用して、行の添え字を置き換えるだけです 行のすべてが必要だとしましょう。最初の添え字を入力します。 コンマの後に、特定の列を選択しないことを示す a を入力します。 これは、列ごとに行になります。 そして、私はそれを実行できます。 これで、すべての値を並べることができます。 そして、上にスクロールしたい場合は、それらが実際に行の値であることを確認できます。実際、それが返されるものです。 同じことを行って、行の添え字と任意の列番号を持つ列を選択することができます。 しかし、行全体を取り除きたいとしましょう。 第三者がどういうわけかサイコロを振ったと判断したとしましょう。 そこで、m に a と a を添え字として付けます。次に、セミコロンの前に、その行に空行列の値を代入します。 したがって、角かっこを開いたり閉じたりするだけです。 その行を実行すると、ログに返されるのは空の行列です。 m の上にカーソルを置いて、行を数えたい場合は、現在 9 行しかないことがわかります。 さて、行列でできることをいじってみると、残りの 9 人がそれぞれ 6 回目のサイコロの役割を果たすとします。 ということで、その場でやります。 オペレーター、私はmを持っています。 そして、代入演算子は Concat になります。つまり、二重の縦棒と等号です。 複数の文字を持つこれらの演算子のコンポーネント間にスペースを入れることはできないため、スペースは入れません。 そして、j 関数を再び使用します。 そして、9行しかありません。 そして、私は1つの列が欲しいです。 そして、ランダムな整数を再び使用します。 その引数については、まだ 6 面ダイスなので、次のように指定します。その行を実行すると、6 番目の列が追加されて m がその場で変更されます。 これで、マトリックスに 6 つの列があることがわかります。 ログをクリアしましょう。 そして、m に値を割り当てることからやり直します。 もう乱数を使うつもりはありません。 そこで、スクリプト エディタ ウィンドウの内容をクリアします。 カウンタ変数 i を初期化し、その値を代入します。それを初期化するために実行します。 そして、新しい行で、別の行列を m に割り当てます。 したがって、m には j 関数の結果が割り当てられます。 5列になります。 この行列には 5 行 5 列があり、行列の要素ごとに i をインクリメントします。 そのため、i plus plus を使用します。これは、ポスト インクリメント演算子で、その場で追加します。 そして、先に進んでそれを実行します。 そして、私はbyマトリックスを持っています。 また、列単位ではなく、行単位でインクリメントしていることに注意してください。 これは、これから登場する別の添え字付け方法にとって重要です。 したがって、行ごとにインクリメントします。 さて、実際に次のシーケンスが必要な場合はどうでしょうか。確かに、それを行うにはさまざまな方法があります。 しかし、簡単な方法は、先ほど作成した行列のすべての要素を乗算することです。これらの演算をベクトル化することができます。 マトリックスをループする必要はありません。 代入するだけです -- そして、別のインプレース代入を行います -- m とアスタリスクが等しいので、その場で乗算する必要はありません。 ただし、新しい変数を作成するのではなく、それを行います。 繰り返しますが、ループする必要はありません。 要素ごとにすべてを掛けていき、それを実行します。 から から まで の増分で進む行列があります。この行列を作成する別の方法は、インデックス関数から始めて 2 つのステップになります。 そこで、スクリプト エディタ ウィンドウの内容をクリアします。 先に進んで、ログもクリアします。 スクリプト エディタ ウィンドウで、m と入力します。 これには、インデックス関数 (インデックス開き括弧) の結果の値が割り当てられます。 ここで使用するオプションの 3 番目の引数は増分です。 それでは、by マトリックスを作成するための最初のステップを次に示します。 したがって、index 関数を使用して行ベクトルを作成します。 そして、私はこれを形にすることができます。 というわけで、新しい行に移動します。 もう一度 m を上書きします。 したがって、m は形状関数の結果であり、最初の引数として m を取り、その次元を 5 行 5 列に変更します。 この形状関数には細心の注意を払う必要があります。 この場合の行ベクトルが、ここで指定した正方行列と一致しない場合、形状で指定した行列が小さすぎると、JMP はこのベクトルを切り捨てます。 または、より大きな行列を指定すると、ベクトルの繰り返しが開始されます。 したがって、形状関数を使用するときは注意してください。 だから私はそれを実行したい。 JMP では通常、すべてのことを行う方法がたくさんあることは別として、私がそれをやりたかった理由の 1 つは、添字の別の方法について話すことです。 行ごとの列の添え字を見てきました。 そして、時々目にする単一の添え字についてお話したいと思います。 そのため、contains 関数を使用することもできますが、文字列でそれを見てきました。 リストで使用できます。 行列で使用できます。 現在格納されている行列内の数値の位置を見つけたい場合は、m です。それを説明する場合は、「OK、行の列です。したがって、コンマの添え字を使用します。 しかし、JMP にそれを見つけてもらうように依頼した場合は、contains のみを使用します。 繰り返しますが、実際には、スクリプトでこの結果を変数に割り当てる場合があります。 ここではそれを行う必要はありません。contains と m のコンマ JMP は、単一の値を提供するわけではありません。 さて、その単一の値はどのように機能するのでしょうか? 単一値の添字-- 戻ってきたら、ここで新しい行に移動して m と入力し、次に単一値の添字を含む角括弧を入力して実行します。 つまり、単一値の添え字は、行列を行ベクトルのように扱い、最初の位置から数え始めます。 ログに戻ってインデックス関数の結果を確認すると、単一の添え字がそれを行ベクトルとして扱い、行ごとにインクリメントしたのと同じように行ごとにカウントして、その値の位置を取得します。 また、後で行列を操作するときに、その単一の添字を返す JMP の他の例を見ていきます。 ここで最後に行うことは、引数として行列を取ることができる関数、計算関数があることを説明するための一種の恣意的な計算です。 しかし、ここで新しい行に進み、log と入力してから、その引数として m を次の値で割ったものと入力します。 それから、この例についてもう 1 つ説明します。 だから私はすべての要素でその計算を行い、 で割ったところです。 全体を通して見ていきます。 すでにいくつかの例を見てきました。 つまり、この除算演算子は、m の対数を引数として取る除算関数であり、m の対数を計算して変数に格納し、除算関数に渡す必要はありませんでした。 私はその計算を直接行うことができます。 繰り返しますが、関数を書き出すと、開き括弧が分割されたようになります。 演算子をコンマと閉じ括弧に置き換えます。 したがって、これらの値を格納する変数を提供する必要はありません。 除算関数の実行中にそれらを計算できます。 これらは、リストと行列のいくつかの例であり、これらの特定のタイプのデータ構造を処理する方法の一部です。