Asked by Pranjal Pathak
on 5 Feb 2013

This question is closed and may reopen in the future if edited.

Can anyone please help me to run the following matlab code?

EDIT: formatted code [the cyclist]

% This function reconstructs wave front from slope matrices dZx and dZy %With spacing dx upto 'terms' Zernike polynomials

function A=ZernikeReconstruction(dZx, dZy, dx, terms); [n, m]=size(dZx); nn= n; xx=reshape(dZx, nn^2, 1); yy=reshape(dZy, nn^2, 1); ss=[xx yy]'; S=reshape(ss, 2*nn^2, 1); clear xx; clear yy; clear ss; X=calcMatrix(nn, terms, dx); [U, W, V]=svd(X, 0); clear X; W=pinv(W); A=V*W*U'*S; clear U; clear W; clear V; clear S; pack; % This function calculate the matrix for Zernike derivatives function Z=calcMatrix(nn, terms, dx); R=(nn-1)*dx/2; [X, Y]=meshgrid(-R:dx:R); r=sqrt(X.^2+Y.^2); Z=zeros(2*nn^2, terms); for i=1:terms z=zeros(1, terms+1); z(i+1)=1; S=ZernikePolynomials(1, terms, nn-1, nn-1, Z); [dZx, dZy]=gradient(S, dx); dZx(r>R)=0; dZy(r>R)=0; xx=reshape(dZx, nn^2, 1); yy=reshape(dZy, nn^2, 1); ss=[xx yy]'; Z(:, i)=reshape(ss, 2*nn^2, 1); end % This function calculates the wavefront based on a set of Zernike co-efficients Z % to get frame size (nn+1)*(nn+1). function S=ZernikePolynomials(nn, z); terms=length(z)-1; [X, Y]=meshgrid(-1:2/nn:1); r= sqrt(X.^2+Y.^2); r(X.^2+Y.^2>1)=0; Theta=atan2(Y, X); S=zeros(nn+1); for i=0:terms [n, m]=single2doubleZ(i); if (m==0) pa=sqrt(n+1); else pa=sqrt(2*(n+1)); end coef=pa; Surf=zeros(nn+1); for s=0:(n-abs(m))/2 c1=n-s; c2=(n+m)/2-s; c3=(n-m)/2-s; Surf=Surf+(-1)^s*factorial(c1)/factorial(s)../factorial(c2)/factorial(c3)*power(r, n-2*s); end if (m<0) Surf=Surf.*sin(abs(m)*Theta); else if(m>0) Surf=Surf.*cos(m*Theta); end S=S+z(i+1)*coef*Surf; end S(r>1)=0; % This function converts single to double index in Zernike polynomials function [n, m]=single2doubleZ(jj); n=floor(sqrt(2*jj+1)+0.5-1; m=2*jj-n*(n+2);

*No products are associated with this question.*

Related Content

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today
## 3 Comments

## José-Luis (view profile)

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/62306#comment_127230

Please edit your post.

http://www.mathworks.com/matlabcentral/answers/13205-tutorial-how-to-format-your-question-with-markup

## the cyclist (view profile)

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/62306#comment_127266

[I've edited your code for readability. Please do look at the link that José-Luis provided.]

You have provided a lot of code, which is fine. Could you please give us some guidance as to what error or warning you are getting, or what the problem is?

## Jan Simon (view profile)

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/62306#comment_127267

@Pranjal Pathak: Please explain what kind of help you need. "Helping to run the code" could mean, that there is an error message or that you do not have a computer with installed Matlab...