Programm von MatLab inLabVIEW übersetzen - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: Programm von MatLab inLabVIEW übersetzen (/Thread-Programm-von-MatLab-inLabVIEW-uebersetzen) |
Programm von MatLab inLabVIEW übersetzen - Peterxxx - 18.11.2009 19:15 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. Programm von MatLab inLabVIEW übersetzen - dimitri84 - 18.11.2009 20:05 ' schrieb: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? In der array Palette gleich das erste. ' schrieb:Wie erstell ich denn am kompaktesten die Schleifen? Was meinst du mit kompakt? Es gibt wie überall For- und While-Schleifen. Wenn du ein array hast und die Schleife so oft durchlaufen soll wie das array Elemnte hat benutzt du einfach die Autoindizierung. Dann sparst du dir das "length(x)". Ist ziemlich kompakt. ' schrieb:PS: Ich soll keine Express-VIs verwenden. Das ist ein sehr guter Vorsatz! Den ganzen Code hier zu posten ist überflüssig, denn den wird dir niemand übersetzen. Du musst selber anfangen und bei konkreten Problemen kannst du hier nachfragen. Lese dich ein bisschen ein. Hier habe ich ein paar pdf-Dokumente gepostet, die dir vielleicht weiterhelfen. Beitrag #5. Gruß dimitri Programm von MatLab inLabVIEW übersetzen - chrissyPu - 18.11.2009 23:11 Hi, ich weiß nicht, was Du mit "übersetzen" meinst, aber LabVIEW hat sowohl matlab- als auch Mathscript-Knoten. Letzteres müsste eigentlich für Deinen Fall gehen (bin aber nur so drüber geflogen)... Dann brauchst du auch keine Matlab-Lizenz für den etnsprechenden Knoten... Grüße, ch Programm von MatLab inLabVIEW übersetzen - Achim - 19.11.2009 07:19 ' schrieb:ich bin absoluter Anfänger in LabVIEW und soll den folgenden Code in LabVIEW übersetzen. Allerdings hatte ich noch nie mit LABView zu tun. Ich nehme an, du sollst den Code mit LV-Mitteln nachbauen...dazu musst du den Matlab-Code erst mal verstehen und analysieren...und dann Stück für Stück aufbauen! Wenn du noch nie mit LV zu tun hattest, könnte das ein bisschen dauern...einfach, weil sich die Programmierkonzepte unterscheiden... Du kannst dir im LV-Example Finder aber z.B. mal das Beispiel "Building Arrays.vi" (Suche nach "FOR") anschauen, um dir die Verwendung von For- und While-Schleifen klarzumachen! Gruß Achim Programm von MatLab inLabVIEW übersetzen - Y-P - 19.11.2009 08:25 Würde Dir gerne helfen, hatte aber mit Matlab seit 6 Jahren nichts mehr zu tun und damals habe ich es nur bei 4 Laborterminen im Rahmen meines Studiums mal angeschnitten, d.h. ich habe so gut wie keine Ahnung (mehr) von Matlab. Du solltest in Worten sagen, was Du umsetzen möchtest und dann kann man Dir helfen. Den Matlab-Code verstehe ich auf die Schnelle nicht und zum Einarbeiten habe ich gerade keine Zeit, keinen Bedarf und auch keine Lust. Gruß Markus ' schrieb:ich bin absoluter Anfänger in LabVIEW und soll den folgenden Code in LabVIEW übersetzen. Allerdings hatte ich noch nie mit LABView zu tun. Programm von MatLab inLabVIEW übersetzen - dimitri84 - 19.11.2009 08:47 ' schrieb:Den Matlab-Code verstehe ich auf die Schnelle nicht und zum Einarbeiten habe ich gerade keine Zeit, keinen Bedarf und auch keine Lust. floor: rundet nach unten ' ist das selbe wie transpose wenn ein . hinter dem Vektor steht, dann geht die Rechenoperation elementweise von statten ein : als Index heißt "laufe alle Elemente durch" Rest ist selbsterklärend Im übrigen wäre ein Satz dazu was der Code überhaupt machen soll nicht schlecht. Einige Variablen sind auch vorher nicht definiert ... ich nehme an die muss der Benutzer dann im m-file selbst eintragen. Und was steht in data? Gruß dimitri Programm von MatLab inLabVIEW übersetzen - Lucki - 19.11.2009 09:27 ' schrieb:Rest ist selbsterklärendAus das hier? [attachment=22609] Programm von MatLab inLabVIEW übersetzen - jg - 19.11.2009 09:32 ' schrieb:Aus das hier?Jaja, die Forensoftware..., die macht aus Doppelpunkt-Klammer zu das entsprechende Smiley-Icon: : ) = Gruß, Jens Programm von MatLab inLabVIEW übersetzen - Achim - 19.11.2009 09:40 ' schrieb:[attachment=50826:clip000.png] Die Code nimmt sich halt selber nicht so ernst... Programm von MatLab inLabVIEW übersetzen - Peterxxx - 19.11.2009 15:31 Ich weiß ehrlich gesagt auch noch nicht für was das Programm gut sein soll. Das primäre Ziel ist erstmal die "übersetzung" und dann wird sich der rest schon ergeben. Die Werte, die nicht definiert sind werden duch eine externe Schnittstelle übergeben. Z.B. Messeinrichtung. Der Code läuft bereits in Mathscript, allerdings soll durch die Übersetzung eine schnelle Berechung erfolgen und somit die Wartezeiten reduziert werden. |