Cant seem to find the error in the question, please help
2 views (last 30 days)
Show older comments
Write a function that is called like this: mbd = spherical_mirror_aberr(fn,D), where all arguments are scalars, fn is the “f-number” of a concave spherical mirror, D is its diameter in millimeters, and mbd is the mean blur diameter in millimeters. The f-number equals the focal length f of the mirror divided by its diameter. Ideally, all the rays of light from a distant object, illustrated by the parallel lines in the figure, would reflect off the mirror and then converge to a single focal point. The magnified view shows what actually happens. The light striking a vertical plane at a distance f from the mirror is spread over a circular disk
function mbd= spherical_mirror_aberr(fn,D)
f= fn*D
x= 0:0.01:D/2
theta= asin(x/2*f)
d= 2*f*tan(theta)*((1/cos(theta))-1)
delta_x= 0.01
mbd= ((8*delta_x)/D^2)* sum(x*d);
end
[SL: edited to format code as Code]
0 Comments
Answers (5)
Vijayramanathan B.tech-EIE-118006077
on 13 Feb 2018
Yeah use element wise operator !
function [ mbd ] = spherical_mirror_aberr( fn,D )
%SPHERICAL_MIRROR_ABERR
% fn is the “f-number” of a concave spherical mirror
% D is its diameter in millimeters
% mbd is the mean blur diameter in millimeters.
% Detailed explanation goes here
f=fn*D;
delta_x = 0.01;
x = 0:delta_x:D/2;
theta = asin(x/(2*f));
d=2*f*tan(2*theta).*(1./cos(theta)-1);
mbd=(8*delta_x/D^2)*x*d'
end
0 Comments
Srishti Saha
on 9 May 2018
Edited: Srishti Saha
on 9 May 2018
This function worked perfectly for me:
function mbd = spherical_mirror_aberr( fn,D )
f=fn*D;
delta_x = 0.01;
x = 0:delta_x:D/2;
theta = asin(x/(2*f));
d=2*f*tan(2*theta).*(1./cos(theta)-1);
mbd = (8*delta_x/D^2)*x*d';
end
0 Comments
Randy Seecharan
on 13 May 2018
Try " mbd= ((8*delta_x)/D^2)* sum(x.*d); "
Just change the last multiplication from matrix multiplication to array multiplication Hope that was helpful
0 Comments
Mohamed Ahmed Khedr
on 17 Oct 2018
Edited: Mohamed Ahmed Khedr
on 17 Oct 2018
The code work in a good way after i have added . before / and *
function mbd = spherical_mirror_aberr(fn,D)
delta_x= 0.01;
f= fn*D;
x= 0:delta_x:D/2;
theta= asin(x./(2*f));
d= 2*f*tan(2.*theta).*((1./cos(theta))-1);
mbd= ((8*delta_x)/D^2).* sum(x.*d);
end
0 Comments
See Also
Categories
Find more on Application Deployment in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!