How do I create a linear function of cells from a cell array?

1 回表示 (過去 30 日間)
Philipp Deutscher
Philipp Deutscher 2019 年 1 月 3 日
回答済み: Sachin Meena 2019 年 1 月 7 日
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{:});

回答 (1 件)

Sachin Meena
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);

カテゴリ

Help Center および File ExchangeMultidimensional Arrays についてさらに検索

製品


リリース

R2018b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by