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.

31 ビュー (過去 30 日間)
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.

採用された回答

Rik
Rik 2021 年 5 月 31 日
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 件)

Image Analyst
Image Analyst 2021 年 5 月 31 日
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

Mathieu NOE
Mathieu NOE 2021 年 5 月 31 日
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 件のコメント
Rik
Rik 2021 年 5 月 31 日
Is that comment about cryptic code a jab at my solution? 😉
Image Analyst
Image Analyst 2021 年 5 月 31 日
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?".

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeMatrix Indexing についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by