horzcat different size rows; zero padding

15 Ansichten (letzte 30 Tage)
Jennifer
Jennifer am 27 Mai 2011
Bearbeitet: Jan Siegmund am 18 Mai 2020
Hi,
I have 6 matrices; all are 7 columns. The number of rows is 12, 14, 16, 17, 17, 17. I want to pick off the first row from each and put them into one matrix.
I create a matrix of zeros that is the final size I need of (17,7), but when I run the following I get a 'CAT arguments dimensions are not consistent'.
A = zeros(17,7);
A = [B(:,1) C(:,1) D(:,1) E(:,1) F(:,1) G(:,1)];
The problem is that the first row does not keep the trailing zeros after the 12 cells are filled with the data. I don't understand why this happens. How can I concatenate these rows?
Thank you!
  1 Kommentar
Oleg Komarov
Oleg Komarov am 27 Mai 2011
Not clear what are you trying to do.
Post the result of "whos" with B-G only in the workspace.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Jan
Jan am 27 Mai 2011
Preallocating A is useless here, because the 2nd line does not write into A, but overwrites A:
A = zeros(17,7); % Useless
A = [B(:,1) C(:,1) D(:,1) E(:,1) F(:,1) G(:,1)]; % Error!
Matt's solution works fine, but is not comfortable. Have you seen FEX: PADCAT? It pads the vectors with NaN's but they can replaced easily afterwards:
A(isnan(A)) = 0;
  1 Kommentar
Jennifer
Jennifer am 19 Okt. 2011
Wow sorry I didn't reply and accept an answer! This is what I ended up doing....thanks!!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

Matt Fig
Matt Fig am 27 Mai 2011
A = [1,2,3,4].';
B = [1 2 3 4 5 6].';
C = zeros(6,2);
C(1:length(A),1)= A % Fill first column with A
C(1:length(B),2)= B % Fill second column with B

Jan Siegmund
Jan Siegmund am 18 Mai 2020
Bearbeitet: Jan Siegmund am 18 Mai 2020
If the input data is a cell array of column vectors, you might consider this:
a = {ones(5,1) ones(8,1)}; %test data
len = max(cellfun('length',a));
b = cellfun(@(x)[x;zeros(len-size(x,1),1)],a,'UniformOutput',false);
out = [b{:}]

Kategorien

Mehr zu Resizing and Reshaping Matrices finden Sie in Help 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