How to add zeros to the end of an array

466 visualizzazioni (ultimi 30 giorni)
Vishnu M S
Vishnu M S il 29 Gen 2013
Risposto: Steven Lord il 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.
Please help.
  2 Commenti
Becky CNS
Becky CNS il 15 Mar 2018
Spostato: Dyuman Joshi il 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
Jan il 15 Mar 2018
Spostato: Dyuman Joshi il 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

Accedi per commentare.

Risposta accettata

Jan
Jan il 29 Gen 2013
Modificato: Jan il 29 Gen 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))];
  12 Commenti
Jan
Jan il 26 Gen 2021
@Black4Ghost: Filling with characters works by:
[YourData, rempmat('0', 1, wantedWidth - numel(YourData))]

Accedi per commentare.

Più risposte (3)

Azzi Abdelmalek
Azzi Abdelmalek il 29 Gen 2013
Modificato: Azzi Abdelmalek il 29 Gen 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
  2 Commenti
Jan
Jan il 29 Gen 2013
B(end) overwrites the last element of B.

Accedi per commentare.


Mohammad Sohail Khan
Mohammad Sohail Khan il 3 Ott 2017
Thank You

Steven Lord
Steven Lord il 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 = paddata(A, n)
A2 = 1×10
1 5 3 8 9 4 7 6 5 2
B2 = paddata(B, n)
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.

Categorie

Scopri di più su Matrices and Arrays in Help Center e File Exchange

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by