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

7 Ansichten (letzte 30 Tage)
Bella
Bella am 18 Mai 2016
Bearbeitet: Jos (10584) am 19 Mai 2016
A=[1 5 6; 3 0 8]

Akzeptierte Antwort

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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (4)

Image Analyst
Image Analyst am 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

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

Melden Sie sich an, um zu kommentieren.


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

Melden Sie sich an, um zu kommentieren.


Jos (10584)
Jos (10584) am 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/

Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by