Function, dot, help me for solution
1 view (last 30 days)
% I couldnt find my mistake
%W depends on e
%sm depends on W
Benjamin Kraus on 2 Aug 2022
This line has the error:
Specifically: W is an anonymous function, so you can't do 4*W. That is what is generating the error message.
You need to evaluate your function W using some value of e before you can multiply it by 4. Alternatively, don't even create an anonymous function, and instead create W using the value of e from the previous line:
v = 19*10^-3;
N = 314;
R = 25*10^-3;
L = 50*10^-3;
C = 1*10^-4;
e = 0.1:0.1:0.9;
W = v.*N.*R.*L.*(L./C).^2.*(e./4).*((16.*e.^2+pi.^2.*(1-e.^2)).^0.5./(1-e.^2).^2);
sm = v.*N.*L.*R./(4.*W.*(L./C).^2);
More Answers (1)
John D'Errico on 2 Aug 2022
Edited: John D'Errico on 2 Aug 2022
Your problem has NOTHING to do with dots. This is a common mistake we see made here.
Suppose you have a pair of function handles, and you want to "add" the functions together? For example, suppose we try this:
F1 = @(x) x.^2;
F2 = @(x) x+1;
One might hope that the sum of those two function handles would be just a new function handle. I might try to write it as F3 = F1 + F2. If I did however, MATLAB would throw an error, just as you found. Instead, you need to create a new function handle, by adding the results of each of the two.
F3 = @(x) F1(x) + F2(x);
As you can see, we can use it as we would expect to happen.
Had I just tried to add or multiply the two function handles together, we would an error as you saw:
F1 * F2
As I said, you CANNOT add, multiply, subtract or divide function handles. Arithmetic operations do not apply to function handles. You need to do it as I showed above.