フィルターのクリア

Inserting a column in a matrix without deleting any column

279 ビュー (過去 30 日間)
joseph Frank
joseph Frank 2011 年 2 月 9 日
コメント済み: Praanesh Sambath 2020 年 3 月 8 日
Hi,
I am wondering of there is a function that enables me to insert a column in a matrix (similar to insert column in excel) without replacing any existing column. For example I have Matrix "A" which is 4x4 and I want to insert a vector "B" after the second column of "A" in order to obtain "A" 4x5 where the 3rd column of "A" is vector "B"

採用された回答

Martijn
Martijn 2011 年 2 月 9 日
Suppose you have:
>> A=reshape(1:16,4,4)
A =
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16
>> B=(17:20)'
B =
17
18
19
20
Then you could obtain the desired matrix C by:
>> C = [A(:,1:2) B A(:,3:4)]
C =
1 5 17 9 13
2 6 18 10 14
3 7 19 11 15
4 8 20 12 16
So you take the first two columns of A concatenate the column B and then concatenate the last two columns of A.
You can generalize this a bit into:
>> D = [A(:,1:N) B A(:,N+1:end)]
Where N then stands for "insert B after the Nth column".
  3 件のコメント
Rene M
Rene M 2020 年 2 月 26 日
How do I do this in a cell array?
Praanesh Sambath
Praanesh Sambath 2020 年 3 月 8 日
how do I do this if I want B to be in between all the clumns of A

サインインしてコメントする。

その他の回答 (1 件)

Izi
Izi 2012 年 12 月 19 日
What about inserting a column which dimensions are not consistent?
  1 件のコメント
Sarah
Sarah 2016 年 9 月 1 日
In MATLAB, a matrix must have internally consistent dimensions. To insert a column like in the example above, you would have to make sure (one way or another) that it had the same number of rows as the rest of the matrix. You would either have to pad it by adding zeros, NaNs, or some distinct number (e.g., -99999) to make up the length if it was too short, or you'd have to effectively pad the matrix if the column was too long.
I suppose you could also create a column of the appropriate length and interpolate so that the resolution of your new column matched that of the matrix-- there's a function in the Image Processing toolbox (imresize) that lets you specify the size you'd like a 2D matrix to be and appropriately re-grids some input dataset. I can't think of why this wouldn't work for a single column vector.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeMatrix Indexing についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by