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

vektor akrobatik, passende lösung ?

 

xPashAx
Forum-Guru

Forum-Guru


Beiträge: 294
Anmeldedatum: 18.05.09
Wohnort: Heidelberg
Version: ---
     Beitrag Verfasst am: 07.02.2011, 09:31     Titel: vektor akrobatik, passende lösung ?
  Antworten mit Zitat      
einen guten morgen jungs
könntet ihr mir da mal behilflich sein.
Code:

x1=[1 2 3 4 5]
% dazugehörender vektor (die vektoren sind natürlich nicht so in der
% reihenfolge Smile )
x2=[6 7 8 9 10]

1-6,2-7,....,5-10 sind paare.
wenn ich jetzt auf einen zahlenstrahl 1 bis 6, 2 bis7, ....,5 bis 10 zeichne, wird im endeffekt von 1-10 abgedeckt. wie kann ich diesen intervall bekommen.
intervall=[min(x1) max(x2)] so sollte es bitte nicht sein, da die vektoren misch masch sind, aber die paare sind bekannt.
x1(i) und x2(i) sind paare.
geht das ohne schleife?
nächstes problem:
Code:

x1=[nan nan 3 4 5]
x2=[6 7 8 9 10]
 

es könnte auch dieser fall sein.
so sollte man auf dem zahlenstrahl 3 bis 8, 4 bis 9, 5 bis 10 zeichnen und der intervall wäre dann von 3 bis 10.
so da die NaN werte keine paare haben, sollte man deswegen die 3 punkte (6,7,8)verbinden so das ich einen intervall von 6 bis 8 habe.
mein end intervall sollte so aussehen, so das sich diese 2 intervalls vereinigen.
Code:

end_intervall=[3: 10]; &so sollte es zum schluss aussehen
 

ich hoffe der einfache bsp ist klar was ich amchen will.

bin auf eure vorschläge gespannt Smile

vielen dank
Private Nachricht senden Benutzer-Profile anzeigen


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 07.02.2011, 14:08     Titel:
  Antworten mit Zitat      
Hallo
Ehrlich gesagt kann ich deinem Beispiel nicht folgen.
Mache doch noch ein Beispiel, wenn sie nicht in der sortierten Reihenfolge sind, was ist dann dein Intervall? Was muss raus kommen?
Private Nachricht senden Benutzer-Profile anzeigen
 
xPashAx
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 294
Anmeldedatum: 18.05.09
Wohnort: Heidelberg
Version: ---
     Beitrag Verfasst am: 07.02.2011, 14:25     Titel:
  Antworten mit Zitat      
hi denny,
danke für die rückfrage.
Code:

x1=[5   1  3 2 4]
x2=[10  6  8 7 9]

sooo wenn ich jetzt von 5 bis 10, 1 bis 6, 3 bis 8, 2 bis 7, 4 bis 9 auf der x-achse zeichne, sind das doch verschobene linien.daraus will ich jetzt den intervall bestimmen, das wäre in dem fall von 1 bis 10.(das wäre sozusagen mein bereich den ich suche)
aber wenn ich jetzt
noch dazu
Code:

x1=[5   1  3 2 4  13]
x2=[10  6  8 7  9  15]

habe.
jetzt habe ich noch ne linie zwischen 13-15.
mein intervall wäre jetzt 1bis 10 und 13 bis 15.
ich hoffe das war jetzt viel hilfreicher.
2.fall ist
Code:

x1=[nan nan nan 3 4 5]
x2=[6   7    1   8 9 10]

jetzt sehen wir das 6 ,7 und 1 kein paar haben.
in dem fall sind für mich die werte zwischen 6,7 und 1 gültig.
da 3 4 und 5 paare haben, sind das ja wieder verschobene linien.
mein ergebniss bzw werte die ich suche wäre 1 bis 7 und 3 bis 10.
3.fall.
Code:

x1=[NaN   NaN  NaN NaN NaN  NaN]
x2=[10      6    8   7  9    15]

jetzt sehen wir da sie keine paare haben. also so sollte meine werte von 6 bis 15 sein .
Private Nachricht senden Benutzer-Profile anzeigen
 
xPashAx
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 294
Anmeldedatum: 18.05.09
Wohnort: Heidelberg
Version: ---
     Beitrag Verfasst am: 07.02.2011, 14:58     Titel:
  Antworten mit Zitat      
ich noch mal. plotten ist ja kein problem
Code:

for l=1:length(x1) %oder x2 die länge ist ja gleich
plot([x1(l) x2(l)],[0.5 0.5],'k','LineWidth',2) %0.5 soll euch nicht irritieren
end
 

daraus entsteht doch eine linie.
aber ich möchte das ergebnis als vektor haben.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 07.02.2011, 16:47     Titel:
  Antworten mit Zitat      
Hallo xPashAx,

Ich beschränke mich mal auf den Teil mit den vorhandenen Paaren:
Code:
x1=[5   1  3 2 4]
x2=[10  6  8 7 9]
v = zeros(1, max(x2));
v(x1) = 1;
v(x2) = -1;
cumsum(v)

Wenn Du nun nach den Nullen suchst, findest du die Intervall-Grenzen.
Die Ausarbeitung überlasse ich mal Dir. Ich hatte hier schon einiges zu praktischen Anwendungen mit CUMSUM geschrieben, vielleicht hilft eine Foren-Suche.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
xPashAx
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 294
Anmeldedatum: 18.05.09
Wohnort: Heidelberg
Version: ---
     Beitrag Verfasst am: 07.02.2011, 16:59     Titel:
  Antworten mit Zitat      
interessante logik jan Smile
sowas in der art ohne schleife hatte ich gesucht. jetzt muss ich die mal besser anschauen.
danke

hmm bei komma zahlen klappt es nicht Sad
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 07.02.2011, 20:48     Titel:
  Antworten mit Zitat      
Hallo xPashAx,

Zitat:
hmm bei komma zahlen klappt es nicht

Nein, bei Komma-Zahlen klappt das nicht. Ich kann in Deiner Frage aber auch nicht finden, dass Du die Methode auf nicht-Integer-Zahlen anwenden möchtest. Bitte poste solche Details, weil ich mir dann das Posten irrelvanter Lösungen sparen kann.

Wenn Du Intervalle mit nicht-Integer-Grenzen berücksichtigen möchtest, wird die Lösung beliebig schwierig. Ab welchem Limit werden dann z.B. benachbarte Punkte als gleich betrachtet? Was ist dann das gewünschte Ergebnis für die Intervalle:
Code:
[1, 2-2^52, 2, 3]

Sind das zwei Intervalle oder eines von 1 bis 3?!

gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
xPashAx
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 294
Anmeldedatum: 18.05.09
Wohnort: Heidelberg
Version: ---
     Beitrag Verfasst am: 10.02.2011, 09:30     Titel:
  Antworten mit Zitat      
hi leute,
hab da mal was gezeichnet was mein problem ist.
x und y vektoren sind gegeben.
ich hoffe die zeichnung ist bissele hilfreicher.

danke

beispiel.pdf
 Beschreibung:

Download
 Dateiname:  beispiel.pdf
 Dateigröße:  214.57 KB
 Heruntergeladen:  334 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
xPashAx
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 294
Anmeldedatum: 18.05.09
Wohnort: Heidelberg
Version: ---
     Beitrag Verfasst am: 10.02.2011, 14:31     Titel:
  Antworten mit Zitat      
mein ansatz:
Code:

init_intervall=round((0:0.01:90)*100)/100;
init_zeros=zeros(1,length(init_intervall));

ind_x=find(ismember(init_intervall,x));
ind_y=find(ismember(init_intervall,y));

for l=1:length(ind_x)
    init_zeros(ind_x(l):ind_y(l))=1;
end
ergebnis=init_zeros;
 

...und mit diff kann ich nun die intervalle bestimmen.
in dem fall
Code:

ergebnis=[2.5 20.3 28.6; 18.6 25.3 30.5]
 
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.