Pad empty spaces in matrix with 0

3 Ansichten (letzte 30 Tage)
Meg Cullen
Meg Cullen am 12 Mai 2019
Kommentiert: madhan ravi am 12 Mai 2019
I have a matrix of the form:
1 4 6 3 7 3
4 6 2 9
5 5 8 2 5
4 8 1 3 9 4
As I accumulated the rows of the matrix from different sources there is a inconsistency in the length of rows. How do I pad the empty spaces with 0? Please help.
  3 Kommentare
Meg Cullen
Meg Cullen am 12 Mai 2019
Bearbeitet: Meg Cullen am 12 Mai 2019
a = [c1m_wrf(:,3)';c2m_wrf(:,3)';c3m_wrf(:,3)';c4m_wrf(:,3)'];
I created a matrix but since the columns of the different cells are of different length...its not working
Image Analyst
Image Analyst am 12 Mai 2019
What are the "empty spaces" - do you want to just pad the right hand side?

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Image Analyst
Image Analyst am 12 Mai 2019
Try this:
c1m_wrf = [1 4 6 3 7 3 ]
c2m_wrf = [4 6 2 9]
c3m_wrf = [5 5 8 2 5]
c4m_wrf = [4 8 1 3 9 4 ]
maxLength = max([length(c1m_wrf), length(c2m_wrf), length(c3m_wrf), length(c4m_wrf)])
ca = {c1m_wrf, c2m_wrf, c3m_wrf, c4m_wrf}
m = zeros(4, maxLength);
for row = 1 : length(ca)
thisVector = ca{row};
thisLength = length(thisVector);
m(row, 1:thisLength) = thisVector;
end
You get
m =
1 4 6 3 7 3
4 6 2 9 0 0
5 5 8 2 5 0
4 8 1 3 9 4

Weitere Antworten (1)

madhan ravi
madhan ravi am 12 Mai 2019
C={[1 4 6 3 7 3] ;...
[4 6 2 9] ;...
[5 5 8 2 5] ;...
[4 8 1 3 9 4] };
M=max(cellfun('prodofsize',C));
Wanted = cell2mat(cellfun(@(x) [x zeros(1,M-numel(x))],C,'un',0))
  2 Kommentare
Rik
Rik am 12 Mai 2019
It is unfortunate the pad function (R2016b and later) requires a cellstr input:
%doesn't work:
Wanted = cell2mat(pad(C,'right',0));
%does work:
Wanted = double(cell2mat(pad(cellfun(@char,C,'un',0),'right',char(0))));
I have the feeling Matlab is getting a bit less weakly typed than it used to be.
madhan ravi
madhan ravi am 12 Mai 2019
Wow ,didn’t know that function so +1 .

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Migrate GUIDE Apps 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