How do is code this last summation? I was able to do the first one but have no clue how to finish it?
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Adam Schlei
am 23 Mär. 2019
Kommentiert: Adam Schlei
am 23 Mär. 2019
function Senior_Project_code
%input values
y = 4;
n = 1;
L = 3;
%equations
%z=17;
a=L/(2*n);
x = 0:1:L;
E = 808/(y^2);
%c = atan(abs((x-a(2*i-1)))/y)*(180/3.14);
%s = (-0.0000000667*atan(abs((x-a(2*i-1)))/y)*(180/3.14).^4 ...
% + 0.0000157209*atan(abs((x-a(2*i-1)))/y)*(180/3.14).^3 ...
% - 0.0010081511*atan(abs((x-a(2*i-1)))/y)*(180/3.14).^2 ...
% + 0.0020817855*atan(abs((x-a(2*i-1)))/y)*(180/3.14) ...
% + 0.9991821678);
Axx(x+1) = 0;
for k = 1:n
Axx(x+1) = Axx(x+1) + E* ...
(-0.0000000667*(atan(abs((x-a*(2*k-1)))/y)*(180/3.14)).^4 ...
+ 0.0000157209*(atan(abs((x-a*(2*k-1)))/y)*(180/3.14)).^3 ...
- 0.0010081511*(atan(abs((x-a*(2*k-1)))/y)*(180/3.14)).^2 ...
+ 0.0020817855*(atan(abs((x-a*(2*k-1)))/y)*(180/3.14)) ...
+ 0.9991821678);
end
Ax = sum(Axx)/(L+1); %can I redo this to match my other equation?
display (Axx,'Brightness Values');
display (Ax,'Average Brightness');
end
Any help redoing Ax to match my above summation with i=1, to z-2... would be much appreciated.
Coding should be in for,if, then, and, or....type statements if possible.
4 Kommentare
Akzeptierte Antwort
darova
am 23 Mär. 2019
Maybe a little bit clearer version:
y= 7.5, n=16, L=16 result: 118.22
y= 4, n=1, L=3 result: 46.31
function main
% input values
y = 4;
L = 3;
z = 17;
n = 1;
av = 0;
for i = 1:z-2
x = L/(z-1)*i;
av = av + s(x,y,n,L);
end
x = L/(2*z-2)*i;
av = av + s(x,y,n,L) + s(L-x,y,n,L);
av = av/z;
display('Average Brightness: '), av
end
function result = s(x,y,n,L)
% equations
E = 808.01/y^2.008;
a = L/(2*n);
c = @(i) atand( abs(x-a*[2*i-1])/y );
coeff = [
-0.0000000667
0.0000157209
-0.0010081511
0.0020817855
0.9991821678];
S = 0;
for i = 1:n
for j = 1:5
S = S + coeff(j)*c(i)^(5-j);
end
end
result = E*S;
end
2 Kommentare
Weitere Antworten (1)
Walter Roberson
am 23 Mär. 2019
%input values
y = 4;
n = 1;
L = 3;
z = 17;
%equations
c = @(x, y, n, l, i) atand(abs((x-l./(2.*n).*(2*i-1)))./y);
p = @(X) -0.0000000667*X.^4 + 0.0000157209*X.^3 - 0.0010081511*X.^2 + 0.0020817855*X + 0.9991821678;
s = @(x, y, n, l, c) sum(p(c(x(:), y, n, l, 1:n)),2);
zs = @(z, y, n, l, c) sum( s(l./(z-1).*(1:z-2), y, n, l, c), 1);
result = @(z, y, n, l, c) (zs(z, y, n, l, c) + s(l./(2*z-2), y, n, l, c) + s(l - l./(2*z-2), y, n, l, c)) ./ z;
result(z, y, n, L, c)
However the result is nowhere near 111
3 Kommentare
Walter Roberson
am 23 Mär. 2019
p = @(TEMPORARY_VARIABLE) -0.0000000667*TEMPORARY_VARIABLE.^4 + 0.0000157209*TEMPORARY_VARIABLE.^3 - 0.0010081511*TEMPORARY_VARIABLE.^2 + 0.0020817855*TEMPORARY_VARIABLE + 0.9991821678;
not sure why you say L=3 then use a lower case l in your equation. Doesn't this screw things up?
No. You need to learn about dummy parameters. For example
s = @(x, y, n, l, c) sum(p(c(x(:), y, n, l, 1:n)),2);
means the same thing as
s = @temporary_function_s;
function result = temporary_function_s(x, y, n, l, c)
p = evalin('caller', 'p');
result = sum(p(c(x(:), y, n, l, 1:n)),2);
end
which in turn means the same as
s = @temporary_function_s;
function result = temporary_function_s(First_Parameter, Second_Parameter, Third_Parameter, Fourth_Parameter, Fifth_Parameter)
p = evalin('caller', 'p');
result = sum(p(Fifth_Parameter(First_Parameter(:), Second_Parameter, Third_Parameter, Fourth_Parameter, 1:Third_Parameter)),2);
end
... almost. With some small details about exactly when p is imported into the function.
Siehe auch
Kategorien
Mehr zu Logical finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!