How do I create a linear function of cells from a cell array?
2 次查看(过去 30 天)
显示 更早的评论
As seen below, I can't convert my cell array into a function:
% Profilverschiebung:
m_1 = 1
m_1 = 1
alpha1 = 14 * pi/180;
invalpha1 = tan(alpha1) - alpha1;
invalpha_w1 = @(x1) 2*(x1(1)+x1(2))*tan(alpha1) / (z(1)+z(2)) + invalpha1;
alpha_w1 = @(x1) (3*invalpha_w1)^(1/3) - 2/5*invalpha_w1;
d_w1 = cell(3,1);
n = 3;
k=0;
for i = 1:n
d_w1{i} = @(x1) z_gewaehlt(i)*m_1 * cos(alpha1)/cos(alpha_w1)
end
d_w1 = 3×1 cell array
{@(x1)z_gewaehlt(i)*m_1*cos(alpha1)/cos(alpha_w1)}
{0×0 double }
{0×0 double }
d_w1 = 3×1 cell array
{@(x1)z_gewaehlt(i)*m_1*cos(alpha1)/cos(alpha_w1)}
{@(x1)z_gewaehlt(i)*m_1*cos(alpha1)/cos(alpha_w1)}
{0×0 double }
d_w1 = 3×1 cell array
{@(x1)z_gewaehlt(i)*m_1*cos(alpha1)/cos(alpha_w1)}
{@(x1)z_gewaehlt(i)*m_1*cos(alpha1)/cos(alpha_w1)}
{@(x1)z_gewaehlt(i)*m_1*cos(alpha1)/cos(alpha_w1)}
Geometriebedingung_Planetenstufe = @(x1) d_w1{1} + 2 * d_w1{2} + d_w1{3};
x1_0 = [0 0 0]
x1_0 = 1×3
0 0 0
x1 = fminsearch(Geometriebedingung_Planetenstufe, x1_0)
And thats my error log:
Undefined operator '*' for input arguments of type 'function_handle'.
Error in Berechnung_Zaehnezahlen_und_Profilverschiebung_MEL_KU_2>@(x1)d_w1{1}+2*d_w1{2}+d_w1{3}
Error in fminsearch (line 200)
fv(:,1) = funfcn(x,varargin{:});
0 个评论
回答(1 个)
Sachin Meena
2019-1-7
The error arises as you are trying to multiply a function handle with scalar 2. The content of your cell array d_w1 are function handles that take a single argument as input. While using them in defining "Geometriebedingung_Planetenstufe", you are not providing these handles any input, hence the error. I am not sure as to what you wish to achieve, but you probably wish to do this.
Geometriebedingung_Planetenstufe = @(x1) d_w1{1}(x1) + 2 * d_w1{2}(x1) + d_w1{3}(x1);
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Special Functions 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!