Cell array as input function
이전 댓글 표시
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
답변 (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
Rik
2020년 12월 12일
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
2020년 12월 12일
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)))
카테고리
도움말 센터 및 File Exchange에서 Structures에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!