主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

行列の作成,連結,および拡張

最も基本的なMATLAB®データ構造は行列です。行列とは2次元の,行と列に配置された方形配列のデータ要素です。この要素は数値,論理値(真正的または),日付と時刻、字符串またはその他のMATLABデータ型のいずれでもかまいません。

1つの数値でも行列として格納されます。100年値たとえばを含む変数は型の1行1列の行列として格納されます。

一个= 100;谁一个
Name Size Bytes Class Attributes A 1x1 8 double

データの行列の作成

特定のデータセットがある場合,大かっこを使用して行列に要素を配置できます。1行のデータには要素間にスペースまたはコンマがあり、セミコロンによって行が区切られます。たとえば、4 つの数値要素の 1 行を作成します。1 つの行と 4 つの列があるため、結果の行列のサイズは 1 行 4 列です。この形状の行列はよく行ベクトルと呼ばれます。

A = [12 62 93 -8]
一个=1×412 62 93 -8
深圳=大小(一个)
深圳=1×21 4

次に,同じ数で行列を作成しますが,2行に配置します。この行列には2つの行と2つの列があります。

A = [12 62;93年8]
一个=2×212 62 93 -8
深圳=大小(一个)
深圳=1×22 2

特殊な行列関数

MATLABには,特定の値または特定の構造体で行列を作成できるさまざまな関数があります。たとえば,関数0と関数はすべてが0の行列またはすべてが1の行列を作成します。これらの関数の1番目と2番目の引数はそれぞれ,行列の行数と列数です。

A = 0 (2)
一个=3×20 0 0 0 0
B = 1(2、4)
B =2×41 1 1 1 1 1

関数诊断接头は,行列の対角要素に入力要素を配置します。たとえば4つの要素を含む行ベクトル一个を作成します。次に,対角要素が一个の要素である4行4列の行列を作成します。

A = [12 62 93 -8];B =诊断接头(A)
B =4×412 0 0 0 62 0 0 0 93 0 0 0 0 0 0 -8

行列の連結

大かっこを使用して既存の行列を結合することもできます。この行列の作成方法は,”“連結と呼ばれます。たとえば2つの行ベクトルを連結して,さらに長い行ベクトルを作成します。

一个= 1(1、4);B = 0(1、4);【答案】[a]
C =1×81 1 1 1 0 0 0

一个Bを行列の2行として配置するには,セミコロンを使用します。

D = [A, B]
D =2×41 1 1 1 0 0 0

2つの行列を連結するには,これらのサイズに互換性がなければなりません。言い換えれば,行列を水平に連結する場合,それらは同じ行数でなければなりません。垂直に連結する場合,それらは同じ列数でなければなりません。たとえば,どちらも2行をもつ2つの行列を水平に連結します。

一个= 1(2、3)
一个=2×31 1 1 1 1
B = 0 (2, 2)
B =2×20 0 0 0
【答案】[a]
C =2×51 1 1 0 0 1 1 1 0 0

行列を連結する代替方法として,互換性のある2つの入力行列を水平に連結するhorzcatなどの連結関数の使用があります。

D = horzcat (A, B)
D =2×51 1 1 0 0 1 1 1 0 0

数列の生成

结肠は,要素が連続している等間隔の行列を作成する場合に便利な方法です。たとえば,要素が1から10の整数である行ベクトルを作成します。

一个= 1:10
一个=1×101 2 3 4 5 6 7 8 9 10

コロン演算子を使用して,任意の範囲内で1ずつインクリメントする数字のシーケンスを作成できます。

一个= -2.5:2.5
一个=1×6-2.5000 -1.5000 -0.5000 0.5000 1.5000

このシーケンスのインクリメントの値を変更するには,範囲の開始値と終了値の間のインクリメント値をコロンで区切って指定します。

一个= 0:2:10
一个=1×61 . 2 .纳米比亚

デクリメントするには,負の数値を使用します。

一个= 6:1:0
一个=1×71 .你的工作是什么? 2 .你的工作是什么

整数値以外を使用してインクリメントさせることもできます。インクリメント値が指定した範囲を等間隔に分割しない場合,MATLABは範囲を超える前に到達可能な最後の値で自動的にシーケンスを終了します。

一个= 1:0.2:2.1
一个=1×61.0000 1.2000 1.4000 1.6000 1.8000 2.0000

行列の拡張

1つ以上の要素を行列に追加するには,既存の行と列のインデックス境界の外に配置して実行できます。MATLABは,行列を四角形に保つために,自動的にゼロをパディングします。たとえば、2行3列の行列を作成して,要素を(3,4)の位置に挿入することで追加の行と列を加えます。

A = [10 20 30;60 70 80)
一个=2×310 20 30 60 70 80
(3、4)= 1
一个=3×410 20 30 0 60 70 80 0 0 0 0

新しい行列を既存のインデックス範囲外に挿入すると,サイズを拡張することもできます。

A(4:5,5:6) = [2 3;4 5]
一个=5×610 20 30 0 0 0 60 70 80 0 0 0 0 0 10 0 0 0 2 30 0 0 0 4 5

ループ内などで行列のサイズが繰り返し拡張するため,通常,作成予定の最大の行列に事前にスペースを割り当てることが,最も効率的です。事前に割り当てないと,サイズが大きくなるたびにMATLABがメモリを割り当てなければならないため,操作が低速化します。たとえば,要素を0に初期化して,10000行と10000列を保持する行列を事前に割り当てます。

一个= 0(10000、10000);

後で追加の要素を事前に割り当てなければならない場合,行列インデックスの範囲外に割り当てて拡張するか,事前に割り当てた別の行列を一个に連結できます。

空配列

MATLABの空配列は,少なくとも1つの次元の長さが0に等しい配列です。空配列は,プログラムで”何もしない”という概念を表す場合に役立ちます。たとえば,ベクトルの0未満の要素をすべて見つけたいが,何もないとします。関数找到はインデックスの空のベクトルを返し,0未満の要素を見つけられなかったことを示します。

A = [1 2 3 4];印第安纳州=找到(< 0)
Ind = 1x0空双行向量

多くのアルゴリズムには空配列を返すことができる関数呼び出しが含まれます。多くの場合,特殊なケースとして処理するのではなく,空配列がこれらのアルゴリズムを関数の引数として通過できるようにすると便利です。空配列の処理をカスタマイズしなければならない場合は,関数isemptyを使用してチェックできます。

TF = isempty(印第安纳州)
TF =逻辑1

関連するトピック