How do is code this last summation? I was able to do the first one but have no clue how to finish it?
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Adam Schlei
el 23 de Mzo. de 2019
Comentada: Adam Schlei
el 23 de Mzo. de 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 comentarios
Respuesta aceptada
darova
el 23 de Mzo. de 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 comentarios
Más respuestas (1)
Walter Roberson
el 23 de Mzo. de 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 comentarios
Walter Roberson
el 23 de Mzo. de 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.
Ver también
Categorías
Más información sobre Logical en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!