# Double "for loop" with an integral of hundle functions, problem.

2 views (last 30 days)
Kraka Doros on 15 Jun 2022
Commented: Kraka Doros on 18 Jun 2022
>> %assing two handle functions to a column with two rows
f1=@(t)3*t+1;
f2=@(t)1.5*t+0.5;
fcell=cell(2,1);
fcell{1}=f1;
fcell{2}=f2;
>> % gives me a 2x1 cell array, with @(t)3*t+1 in the first row
>> % and @(t)1.5*t+0.5 in the second row.
>> % I will use this cell array in a double "for loop" to produce something
>> C=sym(zeros(2,1));
for kk=1:2
for jj=1:2
C(kk)=C(kk)+integral(@(t)fcell{kk}(t),0,1);
end
end
>> % This, gives me 2 resaults, in a 2x1 sym. The first resault is :
>> C(1)
ans =
5
>> % and the second is :
>> C(2)
ans =
5/2
>> % My problem is that, actually, i have more than 10 handle functions (lets say 10), and
>> % i do not want to write each one, every time. I want to copy them (from another software) and
>> % past in an array (in Matlab). And then, use this array as a source to call these 10 functions in the
>> % double "for loop".
>> % But i cannot make an array of 10 cells, including the 10 hundle functions. They comes
>> % out as "sym". And this, couse problem when i use it in the double "for loop". It gives me
>> % errors like : ........The following error occurred converting from sym to double:
% Error using symengine (line 59)
% DOUBLE cannot convert the input expression into a double array.
% If the input expression contains a symbolic variable, use VPA.
% Any help please

Torsten on 15 Jun 2022
f=@(t)[-7*t+25 %insert (by copy and paste), in the [ ], 10 functions. (Copy %from another software)
140*t+-122
107*t+-56
385*t+-890
-546*t+2834
-72*t+464
-16*t+128
440*t+-3064
-256*t+2504
-142*t+1478
];
result = integral(f,0,1,'ArrayValued',1);
C=zeros(2,1);
for kk=1:2
for jj=1:2
C(kk)=C(kk)+result(kk);
end
end
C
C = 2×1
43.0000 -104.0000
Kraka Doros on 18 Jun 2022
Thanks