MATLAB での行と列の交換

Sheeraz Gul 2023年6月20日
  1. Base MATLAB で行と列を入れ替える
  2. MATLAB でユーザー定義関数を使用して行と列を入れ替える
  3. MATLAB で randperm() 関数と size() 関数の組み合わせを使用して行と列を入れ替える
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
著者: Sheeraz Gul
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook