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

Algorithmus finden

 

heshamali
Forum-Anfänger

Forum-Anfänger


Beiträge: 46
Anmeldedatum: 26.02.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.03.2016, 16:08     Titel: Algorithmus finden
  Antworten mit Zitat      
Hallo zusammen,
ich habe ein cod aufgebaut,wo ich mir die Zahlen an der stelle 1 und 5 gelesen habe.ich möchte die zahle 2 zwischen 5 und 1 in der Orginale linie nicht mehr haben .
das Problemm ist aber ,dass man die Zahlen nicht immer lesen kann, wenn man mehrere zahlen in mehreren Stellen hat.
ich suche ein Algorithmus,wo ich das überalle benutzen kann ,ohne die Zahlen abzulesen?
Code:
a=[ones(1,10),2,5*ones(1,6)];

plot(a)
 hold all
a_korrektur_1=a;
a_korrektur_1(11)=1;
plot(a_korrektur_1,'g')


a_korrektur_2=a;
a_korrektur_2(11)=5;
plot(a_korrektur_2,'r')

legend({'Original','Erste Korrektur','Zweite Korrektur'})


danke ich freue mich auf eure Vorschläge Smile
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.03.2016, 16:25     Titel:
  Antworten mit Zitat      
Hallo,

es ist schwer nachvollziehbar, was genau du erreichen möchtest.

Grundsätzlich scheint logische Indizierung geeignet, z.B. alle 2en auf 5 setzen:
Code:
a_korrektur_2(a_korrektur_2 == 2) = 5;


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
heshamali
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 46
Anmeldedatum: 26.02.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.03.2016, 16:29     Titel:
  Antworten mit Zitat      
hallo Harald,
du kannst den cod bei dir ausführen und gucken .ich möchte eine von beider korrektur benutzen .wo ich keine zwischenpunkt zweischen 1 und 5, ohne das abzulesen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.03.2016, 16:31     Titel:
  Antworten mit Zitat      
Hallo,

hast du den Vorschlag denn mal versucht?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
heshamali
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 46
Anmeldedatum: 26.02.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.03.2016, 16:34     Titel:
  Antworten mit Zitat      
ja habe ich aber ich will dasd ohne das von dem Diagramm abzulesen rausbekommen.
Private Nachricht senden Benutzer-Profile anzeigen
 
heshamali
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 46
Anmeldedatum: 26.02.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.03.2016, 16:56     Titel:
  Antworten mit Zitat      
Code:
clear all
close all
a=[ones(1,10),2,5*ones(1,6)];

plot(a)
 hold all
a_korrektur_1=a;
a_korrektur_1(11)=1;
%plot(a_korrektur_1,'g')


a_korrektur_2=a;

a_korrektur_2(a_korrektur_2 == 2) = 5;
plot(a_korrektur_2,'r')

legend({'Original','Zweite Korrektur'})

meinst du so ?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.03.2016, 16:56     Titel:
  Antworten mit Zitat      
Hallo,

was willst du nicht ablesen müssen? Die 2? Wie wäre es dann mit
Code:
a_korrektur_2(a_korrektur_2 ~= 1 & a_korrektur_2 ~= 5) = 5;

oder
Code:
a_korrektur_2(~ismember(a_korrektur_2, [1, 5])) = 5;


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
heshamali
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 46
Anmeldedatum: 26.02.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.03.2016, 17:01     Titel:
  Antworten mit Zitat      
jetzt hast du nichts geändert,
hier habe ich nur eine stufe ,ich habe aber ander code ,wo ich mehrere stufe habe .
z.b. zwischen 0 und 500 ,zwischen 500 und 1000 u.s.w.
ich möchte meine cod so mache in dem ich das nicht ablesen ,sonder bei alle stufen rausfinden .
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.03.2016, 17:19     Titel:
  Antworten mit Zitat      
Hallo,

natürlich habe ich etwas geändert: zuvor musstest du die 2 auslesen, jetzt nicht mehr.
Nach meinem Verständnis war das Problem damit gelöst, aber anscheinend hatte ich jedoch das Problem nicht verstanden. Eine klare Darstellung des Problems von vorneherein ist sehr hilfreich, um auch von Anfang an eine hilfreiche Antwort zu liefern.

Nun bleibt noch die Frage: was ist für dich eine Stufe, was ist nur ein Wert zwischen Stufen?
Reicht eine Wiederholung des Werts aus, damit es eine Stufe ist? Willst du also mit anderen Worten die Datenpunkte ersetzen, die nicht wiederholt werden?
Wenn nicht, wieviele Wiederholungen müssen es sein?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
heshamali
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 46
Anmeldedatum: 26.02.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.03.2016, 12:12     Titel:
  Antworten mit Zitat      
hier ist eine bild ,wo ich gezeichnet ,wo den zwischenpunkt sind,den ich n9icht haben will.
erste Sufe 0
zweite stufe 500
dreitte stufe 1500
4.stufe 1000
5.stufe 3000
6.stufe 2000
dann fingt wieder von Null an.
ich möchte zwischen den Stufen keine Punkte haben .

Erklären.png
 Beschreibung:

Download
 Dateiname:  Erklären.png
 Dateigröße:  65 KB
 Heruntergeladen:  297 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 16.03.2016, 12:48     Titel:
  Antworten mit Zitat      
Hallo,

Die Antwort auf die Frage
Zitat:
Willst du also mit anderen Worten die Datenpunkte ersetzen, die nicht wiederholt werden?

ist also "Ja"?

Das ginge so:
Code:
a_korrektur_2=a;
singleVals = find(diff(a_korrektur_2(1:end-1)) ~= 0 & diff(a_korrektur_2(2:end)) ~= 0)+1;
a_korrektur_2(singleVals) = a_korrektur_2(singleVals+1);


Für die korrektur_1 müsste in der letzten Zeile "-1" statt "+1" stehen.

Testen konnte ich es an deinem Beispiel leider nicht, da du nur die Graphik und nicht die Daten zur Verfügung gestellt hast.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
heshamali
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 46
Anmeldedatum: 26.02.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.03.2016, 13:16     Titel:
  Antworten mit Zitat      
hallo Harald,
perfekt, es hat funktioiert.
bei der ersten 6 stufen .es geht aber weiter .ich meine die 6 stufen laufen weiter .
kann ich noch dazu noch was machen, damit ich bis end der Signal ohne zwischen punkten kommen kann?
wass meinst du mit singleVals?

vielen besten danke

Erklären.png
 Beschreibung:

Download
 Dateiname:  Erklären.png
 Dateigröße:  164.7 KB
 Heruntergeladen:  284 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 16.03.2016, 14:32     Titel:
  Antworten mit Zitat      
Hallo,

bei den ersten 6 Stufen funktioniert es also. Was ist bei den anderen Stufen anders, dass es dort nicht funktioniert?

Damit sind wir wieder bei meinen Fragen von 15.3., 16:19 - es muss klar sein, was eine Stufe ist und was nicht, damit das Problem gelöst werden kann.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
heshamali
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 46
Anmeldedatum: 26.02.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.03.2016, 15:48     Titel:
  Antworten mit Zitat      
hallo,
also das Signal wiederholt sich immer nach der 6 Stufe.
wie ich das auf dem bild gezeigt habe .

Erklären.png
 Beschreibung:

Download
 Dateiname:  Erklären.png
 Dateigröße:  112.51 KB
 Heruntergeladen:  290 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 16.03.2016, 16:20     Titel:
  Antworten mit Zitat      
Hallo,

das Bild beantwortet leider nicht meine Rückfragen.

Da sehen zwei Übergänge gleich aus, und einer ist in Ordnung und der andere nicht. Warum?

Ohne Daten kann ich leider auch nicht nachvollziehen, woher eventuelle Probleme kommen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.