Error when I concatenated matrices
2 次查看(过去 30 天)
显示 更早的评论
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 个评论
Muhammad Usman Saleem
2016-4-27
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.
采纳的回答
Stephen23
2016-4-27
编辑:Stephen23
2016-4-27
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
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!