# How to add zeros to the end of an array

577 views (last 30 days)
Vishnu M S on 29 Jan 2013
Answered: Steven Lord on 29 Nov 2023
I have two arrays like A=[ 1 5 3 8 9 4 7 6 5 2 ] & B=[ 5 2 3 9 7 4 5 ]
In 'A', I have 10 elements(say m) and in 'B', I have 7(say n) elements. I need to add 10-7=3 (m-n) zeros to the end of B.
Becky CNS on 15 Mar 2018
Moved: Dyuman Joshi on 29 Nov 2023
I am trying to do this but with A and B as matrices. The error message I get is 'Dimensions of matrices being concatenated are not consistent'. All I want to do is add zeros to another vector the length of A-B. How would I change the above code?
Jan on 15 Mar 2018
Moved: Dyuman Joshi on 29 Nov 2023
If you post your code, we could fix it directly. This would be more convenient and useful than to create an artificial example.
A = rand(3,4);
B = rand(2,2);
B(size(A,1), size(A,2)) = 0;
A - B

Jan on 29 Jan 2013
Edited: Jan on 29 Jan 2013
Matlab fills missing elements with 0 automatically:
A = [1 5 3 8 9 4 7 6 5 2];
B = [5 2 3 9 7 4 5];
B(numel(A)) = 0;
Less efficient, but working also:
B = [B, zeros(1, length(A) - length(B))];
Md Rezaul Karim on 26 Jan 2021
Thank you Jan
Jan on 26 Jan 2021
@Black4Ghost: Filling with characters works by:
[YourData, rempmat('0', 1, wantedWidth - numel(YourData))]

Azzi Abdelmalek on 29 Jan 2013
Edited: Azzi Abdelmalek on 29 Jan 2013
A=[ 1 5 3 8 9 4 7 6 5 2 ];
B=[ 5 2 3 9 7 4 5 ];
B(end:numel(A))=0
Jan on 29 Jan 2013
B(end) overwrites the last element of B.
Azzi Abdelmalek on 29 Jan 2013
B(end+1:numel(A))=0

Mohammad Sohail Khan on 3 Oct 2017
Thank You

Steven Lord on 29 Nov 2023
If you're using release R2023b or later, you could use paddata or resize to do this.
A=[ 1 5 3 8 9 4 7 6 5 2 ];
B=[ 5 2 3 9 7 4 5 ];
n = max(length(A), length(B)); % using length is okay since A and B are both vectors
If we always want to make the vector longer or keep it the same size, use paddata.
A2 = 1×10
1 5 3 8 9 4 7 6 5 2
B2 = 1×10
5 2 3 9 7 4 5 0 0 0
If you want to append to the vector or remove elements depending on whether it's shorter or longer than your desired size, use resize.
A3 = resize(A, 8) % drop last 2 elements
A3 = 1×8
1 5 3 8 9 4 7 6
B3 = resize(B, 8) % add one 0 at the end
B3 = 1×8
5 2 3 9 7 4 5 0
There's also trimdata to always make it the desired length or shorter.