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

100x1 Matrix mit 1x1 Matrix vergleichen (+Toleranzen)

 

hippa
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 26.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.08.2011, 13:17     Titel: 100x1 Matrix mit 1x1 Matrix vergleichen (+Toleranzen)
  Antworten mit Zitat      
Hallo....habe folgendes Problem:

ich habe eine 100x1 Matrix und möchte die einzelnen Werte solange mit dem Wert meiner 1x1 Matrix vergleichen bis dieser Wert gleich (bzw. gleich unter einbeziehung einer Toleranz von zb +-0.5 ) ist, sobald dieser Wert erreicht ist möchte ich mit diesem Wert weiterrechnen.

Wie mache ich das jetzt mit dem durchsuchen...finde leider keine Lösung bzw. hab ich keine Idee wie ich das machen könnte dass mir sämtliche werte dieser matrix mit der 1x1 matrix verglichen werden. Könnt ihr mir da bitte helfen??

Stimmt es wenn ich das mit den Toleranzen so angebe:
x %wert der 1x1 matrix
y %wert der 100x1 matrix
a=-0.5:0.01:0.5 % Toleranzwert

x==y+a;

??

Bitte um Hilfe!
Private Nachricht senden Benutzer-Profile anzeigen


DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 26.08.2011, 13:30     Titel:
  Antworten mit Zitat      
Das wäre eine Möglichkeit: Findet in x den ersten Wert, der innerhalb von +-0.5 liegt

Code:
index = find(x<-0.5 | x < 0.5,1,'first')
x_limit = x(index)
% oder kurz
x(find(x<-0.5 | x < 0.5,1,'first'))
 
Private Nachricht senden Benutzer-Profile anzeigen
 
hippa
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 26.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.08.2011, 13:54     Titel:
  Antworten mit Zitat      
Ich hoffe ich hab das jetzt richtig verstanden...sprich du suchst den ersten wert von x der zwischen-0.5 und 0.5 liegt, oder??

aber ich benötige ja in y (=100*1 matrix) den ersten wert der =dem x wert (zB x=983) ist mit einer toleranz von 0.5. (kann sein dass ich mich oben etwas undeutlich ausgedrückt habe...sorry) hoffe es ist jetzt verständlich

y=[900.13,950.45,970.698,982.75,988...]
x=[983]

jetzt möchte ich den wert 982.75 finden da.

hoffe es ist jetzt verständlich
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.08.2011, 13:59     Titel:
  Antworten mit Zitat      
Hi,

das geht dann so:


Code:

y(find(abs(y-x)<0.5,1,'first'))
 


Wenn du nicht den ersten, sondern den nächsten willst, musst du etwas mehr Aufwand betreiben.
 
BlackDread
Forum-Century

Forum-Century


Beiträge: 212
Anmeldedatum: 11.05.11
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 26.08.2011, 14:28     Titel:
  Antworten mit Zitat      
Alternativ bietet sich das hier an:

Code:

y=[900.13,950.45,970.698,982.75,988];
x=[983];
toleranz = 0.5;
y(find(y >= x-toleranz/2 & y <= x+toleranz/2,1,'first'))


Gruß Chris
Private Nachricht senden Benutzer-Profile anzeigen
 
hippa
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 26.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.08.2011, 14:59     Titel:
  Antworten mit Zitat      
Danke für die Antworten. Ich glaube etwas undeutlich hab ich mich noch immer ausgedrückt/oder ich habe euren code nicht ganz verstanden...es tut mir wirklich leid.

Ich möchte nicht eine Zahl als Toleranzwert haben sondern einen ganzen bereich.zB:

wenn mein x 983 ist....möchte ich in y den wert finden der im Bereich [982.5,983.5] am nähesten bei 983 liegt (es soll der ganze bereich in zb einer schrittweite von 0,01. abgesucht werden nicht nur 982.5,983 und 983,5.

Ich bitte wieder um Antworten! Vielen Dank
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.08.2011, 15:09     Titel:
  Antworten mit Zitat      
Jetzt aber:
Code:

y=[900.13,950.45,970.698,982.75,982.76 988];
x=983;
tmp=y(find(abs(y-x)<0.5)); % alle Werte in dem Toleranzbereich
[~,index]=min(abs(tmp-x)); % der mit geringstem Abstand
ergebnis=tmp(index);
 
 
hippa
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 26.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.08.2011, 15:13     Titel:
  Antworten mit Zitat      
DANKESCHÖN, ich wäre da nie im Leben selber draufgekommen...was ich da alles schon versucht hatte....Danke vielmals Very Happy
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.