Error declaring and summing array of functions - Cell contents assignment to a non-cell array object
1 回表示 (過去 30 日間)
古いコメントを表示
I need to sum four functions with common data like this:
TE1 = [180 310 455 600; 0.18 0.25 0.34 0.41];
S = [16.6 19.2 21.7];
eps1 = @(B,bt,n,t)(B * (S(1)^n) / (1 - bt) * t^(1 - bt));
f1m = zeros(4,1);
for i = 1:4
f1m{i} = @(B,bt,n)(((eps1(B,bt,n,TE1(1,i)) - TE1(2,i)) / TE1(2,i))^2);
end
f1 = @(B,bt,n)(sum(f1m(B,bt,n)));
and i get
Cell contents assignment to a non-cell array object.
Error in optim_fi (line 28)
f1m{i} = @(B,bt,n)(((eps1(B,bt,n,TE1(1,i)) - TE1(2,i)) / TE1(2,i))^2);
Can anybody help me solve my problem?
0 件のコメント
採用された回答
Jan
2017 年 3 月 26 日
編集済み: Jan
2017 年 3 月 26 日
f1m was created as double vector:
f1m = zeros(4,1);
Then you need round parenthesis, not curly braces for indexing as in cell arrays:
for k = 1:4
f1m(k) = @(B,bt,n)(((eps1(B,bt,n,TE1(1,i)) - TE1(2,k)) / TE1(2,k))^2);
end
[EDITED] Sorry, the zeros() was the problem, not the assignment:
f1m = cell(4,1);
for i = 1:4
f1m{i} = @(B,bt,n)(((eps1(B,bt,n,TE1(1,i)) - TE1(2,i)) / TE1(2,i))^2);
end
2 件のコメント
Jan
2017 年 3 月 26 日
@Denis: Try it the other way around: leave the assignment, change the definition of f1m. See [EDITED]
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Matrix Indexing についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!