how to insert the column [60;80] into the third column

7 visualizaciones (últimos 30 días)
Bella
Bella el 18 de Mayo de 2016
Editada: Jos (10584) el 19 de Mayo de 2016
A=[1 5 6; 3 0 8]

Respuesta aceptada

Azzi Abdelmalek
Azzi Abdelmalek el 18 de Mayo de 2016
Editada: Azzi Abdelmalek el 18 de Mayo de 2016
A=[1 5 6; 3 0 8]
A=[A [60;80]]
%Or
A(:,end)=[60;80]
  1 comentario
Image Analyst
Image Analyst el 18 de Mayo de 2016
This appends. It does not insert. The data are not even in column 3 - they're in column 4. Even though my code is longer because of comments and error checking, I think it's the most robust, and it will insert or append depending on how many columns there are already.

Iniciar sesión para comentar.

Más respuestas (4)

Image Analyst
Image Analyst el 18 de Mayo de 2016
Bella, here's a fairly robust way:
% Define sample data.
A=[1 5 6; 3 0 8]
[rows, columns] = size(A);
% Define a column vector of data you'd like to insert.
colVecToInsert = [60;80]
% Define the column you want to insert it to
col = 3;
% Do the insert
if col >= 1 && col <= (columns + 1)
A = [A(:,1:col-1), colVecToInsert, A(:, col:end)]
elseif col > (columns + 1)
% Will append to right side.
A = [A, colVecToInsert]
else
warningMessage = sprintf('Cannot insert into column %d', col);
uiwait(warndlg(warningMessage));
end

Ahmet Cecen
Ahmet Cecen el 18 de Mayo de 2016
A(:,3) = A(:,3) + [60;80];
  3 comentarios
Bella
Bella el 18 de Mayo de 2016
figured it out, thanks
Ahmet Cecen
Ahmet Cecen el 18 de Mayo de 2016
This is putting it back into that column.

Iniciar sesión para comentar.


Jos (10584)
Jos (10584) el 18 de Mayo de 2016
Editada: Jos (10584) el 18 de Mayo de 2016
A = [1 5 6 ; 0 3 8]
A(:,3) = [60 ; 80] % insert a vector in the 3rd column
  2 comentarios
Image Analyst
Image Analyst el 18 de Mayo de 2016
This overwrites, not inserts.
Jos (10584)
Jos (10584) el 19 de Mayo de 2016
Editada: Jos (10584) el 19 de Mayo de 2016
True, but isn't there a difference between "insert into" and "insert before"/"insert after"? Confusing question → different answers.

Iniciar sesión para comentar.


Jos (10584)
Jos (10584) el 19 de Mayo de 2016
For what it is worth, take a look at INSERTROWS, which you can use with transpose to get "insertcolumns" after (or before) a specific column
A = [1 5 6 ; 3 0 8]
B = [60 ; 80]
ColumnToInsertB_before = 3
C = insertrows(A.', B.', ColumnToInsertB_before-1).'
The function INSERTROWS can be downloaded via this link: http://blogs.mathworks.com/pick/2008/05/16/inserting-rows/

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by