How can I create a cell array whose elements reflect a length based on a given input vector?

1 回表示 (過去 30 日間)
For example, I want to repeat the character 'b' a specified number of times based on a vector; let's say the vector is [3 2 4]. My desired output would be a 1x3 cell array with elements:
{'bbb'} {'bb'} {'bbbb'}
Ideally, I'd like to implement this without a loop. I'm sure there's some nifty Matlab function that accomplishes this, but I haven't been able to find it. repmat and repelem don't appear to be relevant for this particular application (unless I'm using them incorrectly).
Thank you.
  1 件のコメント
KALYAN ACHARJYA
KALYAN ACHARJYA 2019 年 5 月 4 日
Members, how can avoid this for loop?
in=[3 2 4];
result={};
for i=1:length(in)
result{i}=repmat('b',1,in(i));
end

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

採用された回答

Stephen23
Stephen23 2019 年 5 月 4 日
In one line:
>> V = [3,2,4];
>> S = 'b';
>> C = mat2cell(repmat(S,1,sum(V)),1,V);
>> C{:}
ans = bbb
ans = bb
ans = bbbb
  1 件のコメント
Dwight Schrute III
Dwight Schrute III 2019 年 5 月 4 日
Nimble utilization of mat2cell functionality. This works perfectly; I wish I had thought of it. Thanks for your answer, Stephen.

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMultidimensional Arrays についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by