HOWTO · MATLAB

MATLAB での行と列の交換

このチュートリアルでは、MATLAB で行と列を交換する方法を示します。

このページの内容

このチュートリアルでは、MATLAB で行と列を交換する方法を示します。

MATLAB には、行と列を相互に交換するさまざまな方法があります。 このチュートリアルには、MATLAB で行と列を交換するさまざまな方法が含まれています。

Base MATLAB で行と列を入れ替える

Base MATLAB には、行と行、列と列を交換するために使用できる単純な機能があります。 行と行を交換する例を試してみましょう。

% Random 4x6 matrix
A = rand(4,6)

%Swap 1st row with the fourth.
A([4 1],:) = A([1 4],:)

上記のコードは、ランダムな 4x6 行列を作成し、1 番目の行を 4 番目の行と交換します。 出力を参照してください:

Swap Rows 4x6

ご覧のとおり、1 行目は 4 行目と入れ替わっています。 次に、列について同じ例を試してみましょう。

% Random 4x6 matrix
A = rand(4,6)

%Swap 1st column with the sixth.
A(:,[1 6]) = A(:,[6 1])

コードは似ていると思うかもしれませんが、わずかな違いがあります。 行の場合、A([4 1],:) という式を使用し、列の場合、A(:,[1 6]) のように先頭にコンマとコロン記号を使用します。

このコードの出力を参照してください。

Swap Columns 4x6

MATLAB でユーザー定義関数を使用して行と列を入れ替える

行と列の両方に使用できる基本 MATLAB 機能を使用して、ユーザー定義関数を作成することもできます。 これが関数です。

swap.m:

function matrix = swap(matrix,dimension,a,b)

if dimension == 1
    row_swap = matrix(a,:);
    matrix(a,:) = matrix(b,:);
    matrix(b,:) = row_swap;
elseif dimension == 2
    col_swap = matrix(:,a);
    matrix(:,a) = matrix(:,b);
    matrix(:,b) = col_swap;
end

上記の関数は 4つのパラメーターを取ります。最初は行列です。 2つ目は、1 が行を意味し、2 が列を意味するディメンションと、行または列のいずれかで互いに交換する 2つの要素です。

この関数で行を交換してみましょう。

% Random 4x6 matrix
A = rand(4,6)

% Swap rows using the swap function
swap(A,1,1,4)

上記のコードは、最初の行を 4 番目の行と交換します。 出力を参照してください:

Swap Rows Function

列を交換するには、次元を 2 に変更する必要があります。例を参照してください。

% Random 4x6 matrix
A = rand(4,6)

% Swap rows using the swap function
swap(A,2,1,6)

上記のコードは、swap 関数を使用して、最初の列を 6 番目の列と交換します。 出力を参照してください:

Swap Columns Function

MATLAB で randperm() 関数と size() 関数の組み合わせを使用して行と列を入れ替える

randperm() メソッドは、指定された行列の整数のランダム置換に使用されます。 これは、マトリックスである 1つのパラメーターのみを取ります。

size() メソッドは、配列の各次元のサイズまたは指定された行列のサイズを返します。 このメソッドは、次のさまざまな方法で使用できます。

  1. size(X) - 配列の各次元のサイズを返します。
  2. [m,n] = size(X) - 指定された行列のサイズを 2つの変数で返します。
  3. size(X,dim) - X 次元のサイズをスカラー dim で返します。
  4. [d1,d2,d3,…,dn] = size(X) - 配列の n 次元のサイズを個別の変数で返します。

ここで、X は配列、行列、または次元であり、dim は次元のスカラー値です。 この方法の欠点は、行または列がランダムに交換されることです。

このメソッドを使用して行を交換してみましょう。

% Random 4x4 matrix
A = rand(4,4)

% Calling the randperm() and size() methods
% to swap rows
Swapped = A(randperm(size(A, 1)),:)

上記のコードは、行を別の行とランダムに交換します。 出力を参照してください:

A =

    0.4574    0.6377    0.2891    0.2548
    0.8754    0.9577    0.6718    0.2240
    0.5181    0.2407    0.6951    0.6678
    0.9436    0.6761    0.0680    0.8444


Swapped =

    0.9436    0.6761    0.0680    0.8444
    0.4574    0.6377    0.2891    0.2548
    0.5181    0.2407    0.6951    0.6678
    0.8754    0.9577    0.6718    0.2240

列の交換と同様に、次の例を示します。

% Random 4x4 matrix
A = rand(4,4)

% Calling the randperm() and size() methods
% to swap rows
Swapped = A(:, randperm(size(A, 1)))

上記のコードは、指定された行列の列をランダムに交換します。 出力を参照してください:

A =

    0.6022    0.4624    0.3225    0.1759
    0.3868    0.4243    0.7847    0.7218
    0.9160    0.4609    0.4714    0.4735
    0.0012    0.7702    0.0358    0.1527


Swapped =

    0.3225    0.6022    0.4624    0.1759
    0.7847    0.3868    0.4243    0.7218
    0.4714    0.9160    0.4609    0.4735
    0.0358    0.0012    0.7702    0.1527