How to create a matrix with arbitrary dimensions

6 Ansichten (letzte 30 Tage)
Michael Haitz
Michael Haitz am 20 Feb. 2019
Kommentiert: Jos (10584) am 20 Feb. 2019
Hi,
I like to create a matrix with arbitrary dimensions.
E.g., I need a function getMatrix(m, s), which returns a m-dimensional matrix with size s, filled with zeros or ones.
Could not working out until today, help is appreciated.

Akzeptierte Antwort

Jos (10584)
Jos (10584) am 20 Feb. 2019
To create an zero array of an arbitray dimensions between 1 and D with arbitry sizes between 1 and S :
D = 10 ;
S = 6 ;
X = arrayfun(@(x) randi(S), 1:randi(D),'un',0)
M = zeros(X{:})
[size(M) ; [X{:}]]
  2 Kommentare
Michael Haitz
Michael Haitz am 20 Feb. 2019
Thank you, this is what I needed.
Maybe my question was not clear enough, I solved it the following way:
function [Res] = CreateMatrix(Dims, Sz)
try
switch Dims
case 1
Res = zeros(1, Sz);
otherwise
ds = ones(1, Dims);
ds = ds .* Sz;
Res = zeros(ds);
end
catch
Res = [];
end
end
Jos (10584)
Jos (10584) am 20 Feb. 2019
You want a Sz-by-Sz-by- ... -by-Sz array, where Dims specfies the number of Sz's
Res = zeros(repmat(Sz, 1, D))

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Geoff Hayes
Geoff Hayes am 20 Feb. 2019
Michael - this seems like a homework question so see zeros or ones for how to create a matrix of zeros or ones respectively. And see Declare function name, inputs, and outputs for how to build your function.
  1 Kommentar
Michael Haitz
Michael Haitz am 20 Feb. 2019
Ok, I didnt realize that 'ones' or 'zeros' can be called with arbitrary arrays as parameters.
If I take this in account, the solution is easy.
Thank you.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Resizing and Reshaping Matrices finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by