Borrar filtros
Borrar filtros

Error when I concatenated matrices

2 visualizaciones (últimos 30 días)
Viridiana  Torres
Viridiana Torres el 27 de Abr. de 2016
Comentada: Viridiana Torres el 27 de Abr. de 2016
Hello! does anyone know why when I try to execute this command I got the next error
Error using horzcat
Dimensions of matrices being concatenated are not consistent
Error in @(x)[x,nan(1,max(m)-numel(x))]
where
m=cellfun(@numel,R);
B = cellfun(@(x)[x,nan(1,max(m)-numel(x))],R,'un',0);
where m is 30*1 double and R is 30*1 cell composed by numbers
Thanks a lot!
  3 comentarios
Muhammad Usman Saleem
Muhammad Usman Saleem el 27 de Abr. de 2016
your matrix are not favorable for multiplication. Read some basics about multiplication of A and B matrix.
Rows of matrix A must be same as columns of matrix B.
Viridiana  Torres
Viridiana Torres el 27 de Abr. de 2016
Thanks muhammad my mistake is not about how to multiplicate A and B, that is something that I know. My mistake is related with how to interpret the codes in Matlab.

Iniciar sesión para comentar.

Respuesta aceptada

Stephen23
Stephen23 el 27 de Abr. de 2016
Editada: Stephen23 el 27 de Abr. de 2016
This error can occur whenever any of the elements of R are column vectors or matrices:
>> R = {[1;2;3;4],[5;6]};
>> m = cellfun(@numel,R)
m =
4 2
>> B = cellfun(@(x)[x,nan(1,max(m)-numel(x))],R,'un',0)
Error using horzcat
Dimensions of matrices being concatenated are not consistent.
Error in @(x)[x,nan(1,max(m)-numel(x))]
Think about it: you use numel to get the total number of elements in the array and use this to pad the array using a row vector so NaN's, but you always pad using horizontal concatenation [ , ]. But note that numel does not say anything about the orientation of the vectors, or how many rows/columns/pages/... an array has. So you could end up trying to concatenate a column vector and a row vector. Or an array and a row vector.
Basically you are doing this:
>> [[5;6],nan(1,2)]
Error using horzcat
Dimensions of matrices being concatenated are not consistent.
But you need to think about the shape of the two arrays that you are trying to concatenate:
>> [5;6]
ans =
5
6
>> nan(1,2)
ans =
NaN NaN
  1 comentario
Viridiana  Torres
Viridiana Torres el 27 de Abr. de 2016
Dear Stephen thanks a lot for your answer and the way you explain it, I really appreciate when someone tries to explain properly its answer. Thanks a lot!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

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

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by