Cell array as input function
Show older comments
I have a certain function that I need to use:
[t3_1_HR,q3_1_HR,qd3_1_HR,Tact3_1_HR,TSRS3_1_HR] = SimulatePendulumTest(m, kF, kdF, d, Tb, 1, tspanHR);
And I have a cell array with different tspanHR's (every row is a subject and each column is the number of HR files per subject). I want to know every outcome of the function for the different tspanHR values. How can I do this?
Thank you very much!
1 Comment
Answers (1)
You can use cellfun to apply your function to each cell.
[t3_1_HR, q3_1_HR, qd3_1_HR, Tact3_1_HR, TSRS3_1_HR] = ...
cellfun(@(x)SimulatePendulumTest(m, kf, kdF, d, Tb, 1, x), YourCellArray, 'uni', false);
4 Comments
Rik
on 12 Dec 2020
You do need to be carefull with the empty elements of tspanHR.
% example
x = {1, 2, 3;4, 5, 6}; x{4} = [];
x =
2×3 cell array
{[1]} {[ 2]} {[3]}
{[4]} {0×0 double} {[6]}
foo = @(x, y) x + y;
outMe = cellfun(@(x, y)foo(x, 2), x, 'uni', false)
2×3 cell array
{[3]} {[ 4]} {[5]}
{[6]} {0×0 double} {[8]}
UniformOutput takes care of non scalar values of x.
It does, but your function should do that as well. cellfun does not automatically skip empty elements.
A=rand(2,3);
cellfun(@(x) size(A,x),{1,[]},'UniformOutput',false)
Ive J
on 12 Dec 2020
Oops! I see, you are absolutely right, I assumed user function in the simplest form.
A = rand(2, 3);
input = {1, []};
cellfun(@(x) size(A, x), input(~cellfun(@isempty, input)))
Categories
Find more on Structures in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!