Say I have an array, and I use to reshape function to divide it into equal sections. In the case that it cannot be divided into equal sections, how do I add zeros at the end to compensate? Say A=[1 8 1 9 1 4 1 5 0 4], and I want to divide it into sections of 4. 4 is not a set value.

1 Kommentar

Shaquille Powell
Shaquille Powell am 23 Okt. 2017
I'm new to this so I keep asking confusing questions. I want the end up with B=[1 8 1 8,1 4 1 5, 0 4 0 0]

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

Stephen23
Stephen23 am 23 Okt. 2017
Bearbeitet: Stephen23 am 23 Okt. 2017

1 Stimme

Here are some simple methods that automatically adjusts to the length of the vector:
Method One: pad to end of vector:
>> A = [1,8,1,9,1,4,1,5,0,4];
>> N = 4;
>> B = A;
>> B(end+1:N*ceil(numel(B)/N)) = 0
B =
1 8 1 9 1 4 1 5 0 4 0 0
Method Two: preallocate a vector of the right size:
>> A = [1,8,1,9,1,4,1,5,0,4];
>> N = 4;
>> B = zeros(1,N*ceil(numel(A)/N));
>> B(1:numel(A)) = A
B =
1 8 1 9 1 4 1 5 0 4 0 0

Weitere Antworten (2)

Andrei Bobrov
Andrei Bobrov am 23 Okt. 2017
Bearbeitet: Andrei Bobrov am 23 Okt. 2017

2 Stimmen

A=[1 8 1 9 1 4 1 5 0 4];
n = 4;
B = reshape([A(:);zeros(mod(-numel(A),n),1)],n,[])';
KSSV
KSSV am 23 Okt. 2017
Bearbeitet: KSSV am 23 Okt. 2017

1 Stimme

doc padarray
B = [A zeros(1,2)]

Kategorien

Mehr zu Operators and Elementary Operations finden Sie in Hilfe-Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by