In jeder Koordinate findet eine Summation über n=100 Kanäle statt sowie eine Quadrierung dieser Summe...
-> ich habe den algorithmus für einen Punkt über n Kanäle (also f(n) für definierten Punkt) - aber wie erreiche ich diese Berechnung für das gesamte grid der x,y Koordinaten?
könnte helfen.
am besten du postest mal ein lauffähiges code beispiel. was klappt? was klappt nicht? wie weichen die erzielten ergebnisse von den erwarteten ab?
je genauer deine frage ist desdo einfacher kann man helfen. 90% der zeit verbringt man damit rauszufinden was gefragt ist ^^
_________________
Hier der Algorithmus für einen Punkt...mein Ziel ist eine Matrix Ir(x,y)...mit 100x100 Koordinaten
mit x=linspace(-0.05,0.05,100), y=linspace(-0.05,0.05,100)
Bei den Kanälen sind Daten, Koordinaten der Antennen etc. vorhanden (nicht wichtig)...wichtig ist eben nur die Summe über 128 Kanäle und das Quadrat davon...
hallo kate
bitte verwende die code umgebung wenn du code postest. ich hab das mal für dich eingefügt.
die für anfänger leichteste möglichkeit für dein problem wären 2 verschachtelte schleifen über die x und y werte. und dann eine zuordnung zur zeilmatrix. kürzer wäre die möglichkeit über meshgrid etc. allerdings überschauhe ich grade nicht deine restlichen variablen das ich dir dafür die vertige lösung geben könnte.
grüße winkow
ps so dann mit schleifen
Code:
k=1 %Drehung
x=linspace(-0.06,0.06,100)
y=linspace(-0.06,0.06,100) for m=1:numel(x) for l=1:numel(y)
z= -0.02 %m
cm =299792458/sqrt(28) %Geschwindigkeit_Medium
I1(n)= Ch{1,n}.Data(round(((sqrt((Ch{1,n}.Tx.x(1,k)-x).^2+(Ch{1,n}.Tx.y(1,k)-y).^2+(Ch{1,n}.Tx.z(1,k)-z).^2)+... sqrt((Ch{1,n}.Rx.x(1,k)-x).^2+(Ch{1,n}.Rx.y(1,k)-y).^2+(Ch{1,n}.Rx.z(1,k)-z).^2))/cm)/(Ch{1,1}.dt_propag)),k) end
II=sum(I1)
Ir(m,l)=II.^2 %Intensität_Quadrat
end end
anmerkung. ich hab jetzt keine präallikation benutzt. das sind ja nicht so viele felder. bei größeren matritzen sollte man das dann aber schon machen
_________________
Vielen Dank, Winkow...beim Vektor I1(n) bekomme ich die Fehlermeldung
"In an assignment A(I) = B, the number of elements in B and I must be the same"...
Hallo Winkow, ich hoffe ich darf dich nochmal was fragen
Ich würde gerne analog zur Schleife mit dem n eine Schleife für das k(for K=1:32) machen...d.h. neben dem Vektor I1(n) in Abh. von x u. y, würde ich gerne einen Vektor I1(k) in Abh. von x u. y. generieren...Am Ende steht dann für jeden Punkt aus dem Grid eine Summation über n (128)Kanäle und k (32) Variationen...also II speist sich aus I1(n) und I1(k) und bildet eine Summe über diese...Ir dann wieder in Abh. von x und y
Hier vllt zur Verdeutlichung was ich meine (kein funktionierender Code)
Code:
x=linspace(-0.06,0.06,100)
y=linspace(-0.06,0.06,100) for m=1:numel(x) for l=1:numel(y)
z= -0.02 %m
cm =299792458/sqrt(28) %Geschwindigkeit_Medium
das siht für mich auf den ersten blick nach der gleichen berechnung aus. ist aber auch ne sehr lange formel. falls die berechnungen gleich sind musst du doch einfach nur die ersten 32 glieder addieren anstatt alle.
bei deinem code überschreiben sich beide berechnungen gegenseitig. das ergebniss ist das gleiche aber du fürst 32 mal mehr berechnungen druch ohne zusätzliche informationen zu gewinnen.
_________________
x=linspace(-0.06,0.06,100)
y=linspace(-0.06,0.06,100)
z= -0.02 %m
cm =299792458/sqrt(28) %Geschwindigkeit_Medium
I1=nan(128,32);
Ir=nan(100,100,32);
for m=1:numel(x) for l=1:numel(y) for k=1:32 for n=1:128
ich würde es mal so versuchen dann sind die 32 ergebnisse in der 3. dimension von Ir gespeichert glaube ich. ohne lauffähigen code immer etwas schwer zu debuggen. allerding sind das jetzr schon 40 millionen schleifen druchläufe. vieleicht solltest du mal gucken ob es nicht eine lösung mit vektor rechnung giebt. alternativ lässt sich das ganze denke ich auch paralelisieren falls die berechnun zu lange dauert und du die toolbox dazu besitzt.
Vielen Dank für den letzten Code - leider brauchte dieser ein bisschen lange.
Hast du evtl. noch eine andere Idee?? Hab zur Veranschaulichung noch eine Grafik angehängt ...
Bzw. kann ich für jedes k= 1:32 eine andere Variable Ir(k) in einem Vektor bekommen? Und wenn ja wie setze ich das um?
LG
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.