Hello everyone. How to make a matrix with unequal number of rows and columns, and make the number of rows and columns the same by adding zeros. Thank you very much.

How to make a matrix with unequal number of rows and columns, and make the number of rows and columns the same by adding zeros.

 采纳的回答

This isn't too difficult, as Matlab automatically fills an array with zeros as it is expanded.
S=load(websave('dataA.mat','https://www.mathworks.com/matlabcentral/answers/uploaded_files/637390/dataA.mat'));
dataA=S.dataA;size(dataA)
ans = 1×2
375 2
S=load(websave('dataB.mat','https://www.mathworks.com/matlabcentral/answers/uploaded_files/637385/dataB.mat'));
dataB=S.dataB;size(dataB)
ans = 1×2
395 2
%Store them in a cell:
c={dataA,dataB};
max_sz=max(cellfun('size',c(:).',1));
for n=find(cellfun('size',c(:).',1) < max_sz)
c{n}(max_sz,1)=0;
end
max_sz=max(cellfun('size',c(:).',2));
for n=find(cellfun('size',c(:).',2) < max_sz)
c{n}(1,max_sz)=0;
end
c
c = 1×2 cell array
{395×2 double} {395×2 double}
What you do from here is up to you.

更多回答(2 个)

Try this:
a = rand(5, 2);
% Get longest dimension.
longestDimension = length(a)
% Make rows and columns of a both be longestDimension by adding zeros:
a(longestDimension, longestDimension) = 0 % Expand shortest dimension.
whos a % Show size in command window
hello
see example code below
clearvars;
load('dataA.mat')
[m,n] = size(dataA);
if m>=n
out = zeros(m,m);
out(1:m,1:n) = dataA;
else
out = zeros(n,n);
out(1:m,1:n) = dataA;
end

5 个评论

sorry but according to what I can see, your answer appeared after mine , I admit by only a difference of a few minutes
but I wil not fight here on this very basic question, I have other priorities
Mine was 22 minutes ago while yours was only 17 minutes ago, but no big deal. That often happens when people are working on the question at the same time - no big deal. Just thought you and others would like to know of this trick, like I was years ago when I learned the trick from Walter. I use it often now. And of course it's always good to see alternative ways of solving the same problem. For example some people like a longer, well commented solution with longer but descriptive variable names, while others prefer to use a shorter but much more cryptic one liner like you might get with regexp(), bsxfun(), or similar functions. Anyway, have a good day. 😃
Is that comment about cryptic code a jab at my solution? 😉
Ha - no Rik. Actually last time I looked there were only two Answers - yours was not there. Actually I admire people who know the cryptic ways of doing things because they're often something I cannot do or understand. It's just that often/usually I give code that looks longer because I have long descriptive variable names and lots of comments and I usually lose out to those who come along with a one liner of alphabet soup because the poster liked that it was very short. However they often come back with something like "well it works but I don't understand it so can you explain it?".

请先登录,再进行评论。

类别

帮助中心File Exchange 中查找有关 Spline Postprocessing 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by