How to repeat value in Cell using MATLAB

26 views (last 30 days)
Hello Everyone, I hope you are doing well
I have two cell array one is Value and other is Counts. Each Value in cell has specific count,
I want to repeat the element using count.
for example Value=1 its Counts=15 Then the values repeat 15 times , now the new cell has 15 Values for each [1,2,3,4] and it applied on ALL cells.
How can i do that in Matlab

Accepted Answer

dpb on 27 Jun 2022
Edited: dpb on 27 Jun 2022
for i=1:numel(Value)
works if you replace the NaN in the Counts arrays with 0; you can't use a NaN in repmat.
You'll just have to define what is intended with the NaN Value elements -- are any NaN to show up in output or not.
inside the loop works to ignore the NaN entries as well without changing the data arrays.
dpb on 28 Jun 2022
Edited: dpb on 28 Jun 2022
Well, your original input cell arrays are row vectors...just transpose the output from cell2mat, of course...
>> for i=1:numel(Value),ix=isfinite(Counts{i});C{i}=cell2mat(arrayfun(fnRM,Value{i}(ix),Counts{i}(ix),'UniformOutput',false).').';end
>> C
C =
1×6 cell array
{60×1 double} {86×1 double} {98×1 double} {15×1 double} {12×1 double} {12×1 double}
It's more bother to catenate vertically initially because they aren't all the same length.

Sign in to comment.

More Answers (1)

Johan on 27 Jun 2022
Hello, I don't know if there is a builtin matlab function to do what you want, this should work:
Value = {1,2,3}
Value = 1×3 cell array
{[1]} {[2]} {[3]}
Count = {2,1,5}
Count = 1×3 cell array
{[2]} {[1]} {[5]}
%Not sure if you want to repeat the same value or count from the value up
%to count
Final = cellfun(@(x,y) repmat(x,1,y),Value,Count,'UniformOutput',0)
Final = 1×3 cell array
{[1 1]} {[2]} {[3 3 3 3 3]}
Final = cellfun(@(x,y) x+cumsum(ones(y,1))-1,Value,Count,'UniformOutput',0);
Final{1}, Final{2}, Final{3}
ans = 2×1
1 2
ans = 2
ans = 5×1
3 4 5 6 7
Stephen john
Stephen john on 28 Jun 2022
@Johan Pelloux-Prayer The Output Should be cell in which each cell has numeric array , Not cell present in cell.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!

Translated by