horzcat different size rows; zero padding

27 visualizaciones (últimos 30 días)
Jennifer
Jennifer el 27 de Mayo de 2011
Editada: Jan Siegmund el 18 de Mayo de 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 comentario
Oleg Komarov
Oleg Komarov el 27 de Mayo de 2011
Not clear what are you trying to do.
Post the result of "whos" with B-G only in the workspace.

Iniciar sesión para comentar.

Respuesta aceptada

Jan
Jan el 27 de Mayo de 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 comentario
Jennifer
Jennifer el 19 de Oct. de 2011
Wow sorry I didn't reply and accept an answer! This is what I ended up doing....thanks!!

Iniciar sesión para comentar.

Más respuestas (2)

Matt Fig
Matt Fig el 27 de Mayo de 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 el 18 de Mayo de 2020
Editada: Jan Siegmund el 18 de Mayo de 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{:}]

Categorías

Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by