Hallo zusammen,
ich bin absoluter Anfänger in LabVIEW und soll den folgenden Code in LabVIEW übersetzen. Allerdings hatte ich noch nie mit LABView zu tun.
Der Code sieht folgender aus:
<div class='codetop'>CODE</div><div class='codemain' style='height:200px;white-space:pre;overflow:auto'>
[N, NS]=size(data)
dt=1/f_at
Nt_start=floor(t_start/dt)
Nt_end=floor(t_end/dt);
Time=dt*NS
Deltaf=1/Time
p0=2e-5;
rho=1.2;
c0=340;
ddx=0.1
obereGrenze=2*pi/(ddx);
theta2 =1e-2;
DDX=0.04;
dfx=DDX;
dfy=DDX;
%############### Ende Eingabe ######################
%###############
[N P]=size(Koo);
xn(1:N)=Koo(1:N,1);
yn(1:N)=Koo(1:N,2);
N = length(xn);
rn=[xn',yn',zeros(N,1)];
%####################
Fz(1:N,1:NS)=0;
w=hamming(NS); %Gewichtsfunktion
NW=sum(w);
for n=1:N
for m=1:NS
xs(n,m)=data(n,m)*w(m);
end
end
for n=1:N
Fz(n,
=fft(xs(n,
); %FFT berechnen
end
Fz=Fz/NW;
%####################
Nx=floor((right-left)/DDX)+1;
Ny=floor((top-bottom)/DDX)+1;
dfx=DDX;
dfy=D
%####
d1=DF;
for k=1:Ny
for l=1:Nx
n=l+(k-1)*Nx;
x(n)=left + dfx*(l-1);
y(n)=bottom + dfy*(k-1);
end
end
M = length(x);
z = -d1*ones(M,1);
% ####
p(1:M)=0;% = zeros(M,1);
uz(1:M)=0;% = zeros(M,1);
%##################################################################
%#############################
over=4;
Lmx=max(xn)-min(xn);
Lmy=max(yn)-min(yn);
dkx=2*pi/(over*Lmx);
dky=2*pi/(over*Lmy);
NKx=floor(obereGrenze/dkx)+1;
NKy=floor(obereGrenze/dky)+1;
for k=1:NKy
for l=1:NKx
n=l+(k-1)*NKx;
KX(n)=-obereGrenze/2 + dkx*(l-1);
KY(n)=-obereGrenze/2 + dky*(k-1);
end
end
%#####################################################################
%##########################
for f=f_low:10:f_high;
lambda = c0/f;
k0 = 2*pi/lambda;
omega=2*pi*f;
%#########################################
Frequ=floor(f/Deltaf)+1;
prn=zeros(N,1);
prn(1:N)=Fz(1:N,Frequ);
Mk=size(KX);
%#####
for n=1:N
for k=1:Mk(2)
K2=KX(k)^2+KY(k)^2;
if K2 < k0^2
KZ(k)=sqrt(k0^2-K2);
A(k,n)=exp(-sqrt(-1)*(KX(k)*xn(n)+KY(k)*yn(n)+KZ(k)*DF ));
else
KZ(k)=sqrt(K2-k0^2);
A(k,n)=exp(-sqrt(-1)*(KX(k)*xn(n)+KY(k)*yn(n))-KZ(k)*DF );
end
end
end
AhA=A'*A;
Ann=AhA(1,1);
AhA=AhA+Ann*theta2*eye(N);
invAhA=inv(AhA);
%######################################################################
%#### ################################
for n=1:M
for k=1:Mk(2)
K2=KX(k)^2+KY(k)^2;
if K2 < k0^2
KZ(k)=sqrt(k0^2-K2);
alfa(k,n)=exp(-sqrt(-1)*(KX(k)*x(n)+KY(k)*y(n)+KZ(k)*(z(n)+DF) ));
beta(k,n)=+KZ(k)*alfa(k,n)/(rho*omega);
else
KZ(k)=sqrt(K2-k0^2);
alfa(k,n)=exp(-sqrt(-1)*(KX(k)*x(n)+KY(k)*y(n))-KZ(k)*(z(n)+DF) );
beta(k,n)=-sqrt(-1)*KZ(k)*alfa(k,n)/(rho*omega);
end
end
end
Aha=A'*alfa;
Ahb=A'*beta;
c = invAhA*Aha;
b = invAhA*Ahb;
%#######################################################################
p = p + prn.'*c;
uz = uz + prn.'*b;
%##### z-Komponente der Intensität ##################################
end
%Umsortieren
p0=2e-5
for k=1:Ny
for l=1:Nx
m=l+(k-1)*Nx;
result(l,k)=abs(p(m));
end
end
</div>
Beispielsweise habe ich jetzt schon einige Zeit gesucht und keine "Übersetzung" für den Befehl
length(x) gefunden. Was wäre den das entsprechende Symbol in LabVIEW?
Wie erstell ich denn am kompaktesten die Schleifen?
Würde mich sehr über eine Antwort freuen.
Grüße
Peter
PS: Ich soll keine Express-VIs verwenden.