How to repeat value in Cell using MATLAB
38 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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
0 Kommentare
Akzeptierte Antwort
dpb
am 27 Jun. 2022
Bearbeitet: dpb
am 27 Jun. 2022
fnRM=@(v,c)repmat(v,1,c);
for i=1:numel(Value)
C{i}=cell2mat(arrayfun(fnRM,Value{i},Counts{i},'UniformOutput',false).');
end
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.
ix=isfinite(Counts{i});
C{i}=cell2mat(arrayfun(fnRM,Value{i}(ix),Counts{i}(ix),'UniformOutput',false).');
inside the loop works to ignore the NaN entries as well without changing the data arrays.
4 Kommentare
dpb
am 28 Jun. 2022
Bearbeitet: dpb
am 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.
Weitere Antworten (1)
Johan
am 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}
Count = {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 = cellfun(@(x,y) x+cumsum(ones(y,1))-1,Value,Count,'UniformOutput',0);
Final{1}, Final{2}, Final{3}
best,
Johan
4 Kommentare
Siehe auch
Kategorien
Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!