horzcat different size rows; zero padding

15 vues (au cours des 30 derniers jours)
Jennifer
Jennifer le 27 Mai 2011
Modifié(e) : Jan Siegmund le 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 commentaire
Oleg Komarov
Oleg Komarov le 27 Mai 2011
Not clear what are you trying to do.
Post the result of "whos" with B-G only in the workspace.

Connectez-vous pour commenter.

Réponse acceptée

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

Connectez-vous pour commenter.

Plus de réponses (2)

Matt Fig
Matt Fig le 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 le 18 Mai 2020
Modifié(e) : Jan Siegmund le 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{:}]

Catégories

En savoir plus sur Resizing and Reshaping Matrices dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by