WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Matrix dimension

 

Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.08.2012, 09:22     Titel: Matrix dimension
  Antworten mit Zitat      
hallo!

ich steh mal wieder richtig auf dem schlauch!
Ich habe folgendes problem: ich möchte in eine for-schleife meine position bestimmen, das hat auch funktioniert, nur jetzt möchte ich, dass nur werte verwendet werden, die größer 200 sind, und ab da gibt mir matlab immer die fehlermeldung aus.

Ich hab das folgendermaßen probiert:

Code:

for i = 1:589
        [distance_neu(i), azimut_neu(i)] = distance(lat1(i),lon1(i),lat,lon);
       
        %dist_entfernung(i) = distance_neu(distance_neu(i) >= 200);
           
 end

 


bei der zeile dist_entfernung(i) = distance_neu(distance_neu(i) >= 200); gibt mir matlab die fehlermeldung aus.

Distance_neu und Azimut_neu haben die Länge (589x1). Die Variable dist_entfernung wird eine andere länge haben, aber wie kann ich matlab das sagen, weil ich weiß ja vorher noch nicht, wie viele werte dist_entferung dann wirkich haben wird.

wär toll, wenn mir jemand weiterhelfen könnte!
Danke

LG


Caravaggio
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 86
Anmeldedatum: 20.04.12
Wohnort: Braunschweig
Version: R2012a
     Beitrag Verfasst am: 22.08.2012, 09:45     Titel:
  Antworten mit Zitat      
Du bekommst aus der >= Abfrage 0 oder 1. Den Index 0 gibt es nicht bei Matlab...wenn es weiterhin ein for-Schleife bleiben soll, dann muss du

Code:

if(distance_neu(i) >= 200)
            dist_entfernung(i) = distance_neu(i);
end;
 


schreiben. Beachte aber, dass dann das die Länge von dist_entfernung dem letzten Index über 200 entspricht. Daher evtl ein leeren Vektor vorher deklarieren (distance_neu = zeros(589,1)Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.08.2012, 12:35     Titel:
  Antworten mit Zitat      
Danke, das hat schon mal funktioniert.

Nur jetzt ergibt sich ein weiteres problem: ich hab mir jetzt mit den entfernungswerten die x- und y-postion berechnet und möchte diese jetzt plotten:

Code:

    if distance_neu(i) >= 200;
       distance_entfernung(i) = distance_neu(i);
    end
    for j = 1:length(distance_entfernung)
        y(j) = cos(azimuth_neu(i)).*pi/180).*distance_entfernung(j);
        x(j) = sin(azimuth_neu(i).*pi/180).*distance_enfernung(j);
  end  
   
hold on
plot (x_pos(j),y_pos(j))
 
end
 


Jetzt plottet matlab zwar die punkte, nur ist mir aufgefallen, dass die x-werte bis -185 reichen, meine x-achse aber nur bis -50 reicht.
Ist das so richtig? Soweit ich weiss, hab ich meine achse nicht limititiert.

LG
 
Caravaggio
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 86
Anmeldedatum: 20.04.12
Wohnort: Braunschweig
Version: R2012a
     Beitrag Verfasst am: 22.08.2012, 12:42     Titel:
  Antworten mit Zitat      
In deinem Code ist ein end zuviel..und mit
Code:
plot (x_pos(j),y_pos(j))
plottest du nur einen Punkt bzw viele Punkte, die nicht verbunden werden, falls du oben noch eine for-Schleife haben solltest...außerdem ist in deinem Codefragment x_pos und y_pos nicht definiert..soll das so sein?
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.08.2012, 13:37     Titel:
  Antworten mit Zitat      
sorry, x_pos, y_pos sollte eigentlich x und y sein.

ich schreibe euch mal meinen ganzen Code:

Code:

for i = 1:589
    [distance_neu(i), azimuth_neu(i)] = distance(lat1(i),lon1(i),lat,lon);

    if distance_neu(i) >= 200;
       distance_entfernung(i) = diststance_neu(i);
    end
    for j = 1:length(distance_neu)
        y(j) = cos(azimuth(i).*pi/180).*distance_entfernung(j);
        x(j) = sin(azimuth(i).*pi/180).*distance_entfernung(j);
    end
    hold on
    plot (x(j),y(j))
    grid on
end    
 
 


Mit x(j), y(j) plotte ich jeden punkt, und mit hold on, wird doch jeder punkt von j geplottet, oder. wieso werden dann punkte, die bei z.B x = -100 liegen nicht geplottet. Wenn ich mir den plot anzeigen lassen, dann reicht die x-achse nur bis -50, obwohl die x-werte weiter ins negative gehen?

LG
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.08.2012, 08:32     Titel:
  Antworten mit Zitat      
Danke, Problem gelöst Smile
 
Caravaggio
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 86
Anmeldedatum: 20.04.12
Wohnort: Braunschweig
Version: R2012a
     Beitrag Verfasst am: 23.08.2012, 08:38     Titel:
  Antworten mit Zitat      
Wollte gerade antworten Cool Woran lag es ?
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.