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

8 vues (au cours des 30 derniers jours)
Bella
Bella le 18 Mai 2016
Modifié(e) : Jos (10584) le 19 Mai 2016
A=[1 5 6; 3 0 8]

Réponse acceptée

Azzi Abdelmalek
Azzi Abdelmalek le 18 Mai 2016
Modifié(e) : Azzi Abdelmalek le 18 Mai 2016
A=[1 5 6; 3 0 8]
A=[A [60;80]]
%Or
A(:,end)=[60;80]
  1 commentaire
Image Analyst
Image Analyst le 18 Mai 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.

Connectez-vous pour commenter.

Plus de réponses (4)

Image Analyst
Image Analyst le 18 Mai 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
  1 commentaire
Ahmet Cecen
Ahmet Cecen le 18 Mai 2016
Ooh I see what the question meant now.

Connectez-vous pour commenter.


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

Connectez-vous pour commenter.


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

Connectez-vous pour commenter.


Jos (10584)
Jos (10584) le 19 Mai 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/

Catégories

En savoir plus sur Matrix Indexing dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by