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.

 採用された回答

Jos (10584)
Jos (10584) 2019 年 2 月 20 日

0 投票

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 件のコメント

Michael Haitz
Michael Haitz 2019 年 2 月 20 日
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) 2019 年 2 月 20 日
You want a Sz-by-Sz-by- ... -by-Sz array, where Dims specfies the number of Sz's
Res = zeros(repmat(Sz, 1, D))

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

その他の回答 (1 件)

Geoff Hayes
Geoff Hayes 2019 年 2 月 20 日

0 投票

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 件のコメント

Michael Haitz
Michael Haitz 2019 年 2 月 20 日
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.

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

カテゴリ

ヘルプ センター および File Exchange で MATLAB についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by