MATLAB Answers

How can I add n columns to a matrix?

27 ビュー (過去 30 日間)
Tom
Tom 2021 年 9 月 27 日
編集済み: Stephen 2021 年 9 月 28 日
Dear experts,
I have a Matrix X(4082x2). Now I want to add for example two columns to the matrix with every cell = 0.
That´s how I´ve done it so far:
amount_rows = numel(X(:,1));
randomdata = rand(amount_rows,1);
added_column = 0*randomdata;
X = [X added_column added_column];
Until now, that worked completely fine but my problem is that I now have a dataset where I need to add more than 100 columns. It would be pretty annoying to add those 100 times the added_column into the bracket (I hope you know what I mean). On top of that, I want the script to work for every dataset so that it automatically adds the "added_collumn" e.g. n-times. Somehow like that:
X = [X (added_column)*n]
(in the case described above n =2)
I know that this is not correct but I hope you get the idea.
Thanks in advance.
Kind regards, TG

採用された回答

Stephen
Stephen 2021 年 9 月 27 日
編集済み: Stephen 2021 年 9 月 28 日
A simpler, more versatile, and much more efficient approach is to use ZEROS:
R = size(X,1);
C = number_of_new_columns;
X = [X,zeros(R,C)];
Another simple approach is to use indexing (which implicitly fills the other new elements with zeros):
X(1, end+C) = 0 % Thank you Image Analyst
  2 件のコメント
Steven Lord
Steven Lord 2021 年 9 月 27 日
In the general case where you want to augment a matrix with copies of a vector (not necessarily the zero vector) you can use repmat.
A = magic(3)
A = 3×3
8 1 6 3 5 7 4 9 2
v = [42; -99; NaN]
v = 3×1
42 -99 NaN
B = [A, repmat(v, 1, 5)]
B = 3×8
8 1 6 42 42 42 42 42 3 5 7 -99 -99 -99 -99 -99 4 9 2 NaN NaN NaN NaN NaN
Or if you need to augment with a series of vectors that can be created by arithmetic operations you can use implicit expansion.
c = [1; 2; 3]
c = 3×1
1 2 3
d = 1:5
d = 1×5
1 2 3 4 5
E = [A, v, c+d] % c+d makes a 3-by-5 matrix
E = 3×9
8 1 6 42 2 3 4 5 6 3 5 7 -99 3 4 5 6 7 4 9 2 NaN 4 5 6 7 8

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

その他の回答 (0 件)

製品


リリース

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by