error in a function, Error: In an assignment A(I) = B, the number of elements in B and I must be the same.
2 次查看(过去 30 天)
显示 更早的评论
I have defined a piecewise function (below), where C1 (and hence x) is a vector. I don't understand why the error "In an assignment A(I) = B, the number of elements in B and I must be the same." is showing up for the boldfaced line.
function f = eta(C1)
N = 15;
x = N^(1/2).*C1;
f = zeros(size(x));
f(0<x<=0.5) = 1;
*f(0.5<x<=2/3) = -(x-1/2).^2+1;*
f(2/3<x<=5/6) = 384*x.^3-864*x.^2+(1919/3)*x-621/4;
f(5/6<x<=1) = (x-1).^2;
Thanks for the help!
1 个评论
KSSV
2017-8-11
f(0.5<x<=2/3) = -(x-1/2).^2+1;
The above is not valid.....because the condition 0.5<x<=2/3 gives some indices says m in number....where as right side is of size of C1..so you cannot save them into f..so the error.
采纳的回答
Torsten
2017-8-11
You see the difference ?
https://de.mathworks.com/matlabcentral/newsreader/view_thread/59214
Best wishes
Torsten.
0 个评论
更多回答(1 个)
KSSV
2017-8-11
function f = eta(C1)
N = 15;
x = N^(1/2).*C1;
f = zeros(size(x));
f(x>0 & x<=0.5) = 1;
idx = 0.5<x<=2/3 ;
f(idx) = -(x(idx)-1/2).^2+1;
idx = 2/3<x<=5/6 ;
f(idx) = 384*x(idx).^3-864*x(idx).^2+(1919/3)*x(idx)-621/4;
idx = 5/6<x<=1 ;
f(idx) = (x(idx)-1).^2;
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Dependency Analysis 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!