Intercambiar filas y columnas en MATLAB

Sheeraz Gul 15 febrero 2024
  1. Intercambiar filas y columnas con baseMATLAB
  2. Intercambiar filas y columnas con una función definida por el usuario en MATLAB
  3. Intercambiar filas y columnas mediante una combinación de las funciones randperm() y size() en MATLAB
Intercambiar filas y columnas en MATLAB

Este tutorial demuestra cómo intercambiar filas y columnas en MATLAB.

MATLAB tiene diferentes métodos para intercambiar filas y columnas entre sí. Este tutorial incluye diferentes métodos para intercambiar filas y columnas en MATLAB.

Intercambiar filas y columnas con baseMATLAB

Base MATLAB tiene una funcionalidad simple que se puede usar para intercambiar filas con filas y columnas con columnas. Probemos un ejemplo para intercambiar filas con filas.

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

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

El código anterior crea una matriz aleatoria 4x6 e intercambia las filas 1 con la 4. Ver salida:

Intercambiar filas 4x6

Como podemos ver, la fila 1 se intercambia con la fila 4. Ahora probemos el mismo ejemplo para las columnas.

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

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

Puede pensar que el código es similar, pero hay una ligera diferencia. Para las filas, usamos la expresión A([4 1],:), y para las columnas, usamos el símbolo de coma y dos puntos al principio como A(:,[1 6]).

Vea la salida para este código.

Intercambiar columnas 4x6

Intercambiar filas y columnas con una función definida por el usuario en MATLAB

También podemos crear una función definida por el usuario usando la funcionalidad básica de MATLAB, que se puede usar tanto para filas como para columnas. Aquí está la función.

intercambiar.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

La función anterior tomará cuatro parámetros, primero, la matriz; segundo, la dimensión donde 1 significa fila y 2 significa columnas, y dos elementos para intercambiar entre sí, ya sea filas o columnas.

Intentemos intercambiar filas con esta función.

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

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

El código anterior intercambiará la primera fila con la cuarta. Ver salida:

Función de intercambio de filas

Para intercambiar las columnas, necesitamos cambiar la dimensión a 2. Ver ejemplo:

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

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

El código anterior intercambiará la primera columna con la sexta usando la función intercambiar. Ver salida:

Función de intercambio de columnas

Intercambiar filas y columnas mediante una combinación de las funciones randperm() y size() en MATLAB

El método randperm() se utiliza para la permutación aleatoria de enteros para una matriz específica. Solo toma un parámetro, que es la matriz.

El método size() devuelve el tamaño de cada dimensión de un arreglo o el tamaño de una matriz específica. Este método se puede utilizar de las siguientes maneras diferentes.

  1. size(X) - Devuelve el tamaño de cada dimensión de una matriz.
  2. [m,n] = tamaño(X) - Devuelve el tamaño de la matriz especificada en dos variables.
  3. size(X,dim) - Devuelve el tamaño de la dimensión X por escalar dim.
  4. [d1,d2,d3,…,dn] = tamaño(X) - Devuelve los tamaños para las n dimensiones de una matriz en variables separadas.

Donde X es el arreglo, matriz o dimensión y dim es el valor escalar de la dimensión. La desventaja de este método es que cambia aleatoriamente las filas o columnas.

Intentemos intercambiar filas usando este método.

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

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

El código anterior intercambiará aleatoriamente una fila con otra. Ver salida:

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

De manera similar a las columnas de intercambio, aquí está el ejemplo.

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

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

El código anterior intercambiará aleatoriamente las columnas de la matriz dada. Ver salida:

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 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