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

Werte zwischen Intervallgrenzen ausgeben

 

pescatore265
Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 04.11.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.11.2014, 15:18     Titel: Werte zwischen Intervallgrenzen ausgeben
  Antworten mit Zitat      
Moin,

mein Problem ist folgendes:

Ich versuche gerade mir die Werte zwischen zwei Intervallgrenzen ausgeben zu lassen. Ich habe eine Matrix und der i-te Eintrag der ersten Spalte bildet die untere Grenze und der i-te Eintrag der zweiten Spalte die obere Grenze. Die Schrittweite soll 2,5 betragen.

Vielen Dank schon einmal !

Gruß
Private Nachricht senden Benutzer-Profile anzeigen


Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 06.11.2014, 15:42     Titel:
  Antworten mit Zitat      
Hallo,

und was ist deine Frage? Was willst du ausgeben lassen?
Vielleilcht wird es klarer, wenn du ein Beispiell nennst und deinen bisherigen Code zeigst.

Viele Grüße,
Nras
Private Nachricht senden Benutzer-Profile anzeigen
 
pescatore265
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 04.11.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.11.2014, 16:03     Titel:
  Antworten mit Zitat      
Moin,

Ich versuch's demnächst genauer zu schreiben Wink
Ich habe zum Beispiel die Punkte P1 = 0 und P2 = 10. Diese Punkte sollten als Intervallgrenzen dienen. Ich wollte nun die Werte zwischen diesen Punkten haben, die 2,5 auseinanderliegen, also 0, 2.5, 5, 7.5 und 10.Ich bin jetzt schon ein bisschen weitergekommen. (In meinem Code ist die Schrittweite 0,5)

Code:


Matrix_Temp_HS = unique(sort([T_Output_HS ; T_Input_HS]))

Matrix_Temp_HS_neu(:,1)= Matrix_Temp_HS(1:size(Matrix_Temp_HS,1)-1)
Matrix_Temp_HS_neu(:,2)= Matrix_Temp_HS(2:size(Matrix_Temp_HS,1))

Matrix_HS_komplett =[T_Output_HS  T_Input_HS CP_HS]

Laenge_Matrix_Temp_HS = length(Matrix_Temp_HS_neu)
Laenge_Matrix_HS_komplett = length(Matrix_HS_komplett)

for i= 1:1:Laenge_Matrix_Temp_HS
   
    Mittelwert_Intervalle_HS = (Matrix_Temp_HS_neu(i,1)+ Matrix_Temp_HS_neu(i,2))/2
   
    for j= 1:1:Laenge_Matrix_HS_komplett
       
        Werte_zwischen_Grenzen = [ Matrix_HS_komplett(j,1):0.5:Matrix_HS_komplett(j,2)]
       
    end
       
       
end


 


mein Problem ist jetzt folgendes:

Ich brauche eine if Schleife, die folgendes macht. Wenn ein Wert aus dem Vektor Werte_zwischen_Grenzen einem Mittelwert entspricht, dann addiere zu x den j-ten Eintrag der dritten Spalte.

Vielen Dank schon einmal!

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
pescatore265
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 04.11.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.11.2014, 16:45     Titel:
  Antworten mit Zitat      
Code:


Matrix_Temp_HS = unique(sort([T_Output_HS ; T_Input_HS]))

Matrix_Temp_HS_neu(:,1)= Matrix_Temp_HS(1:size(Matrix_Temp_HS,1)-1)
Matrix_Temp_HS_neu(:,2)= Matrix_Temp_HS(2:size(Matrix_Temp_HS,1))

Matrix_HS_komplett =[T_Output_HS  T_Input_HS CP_HS]

Laenge_Matrix_Temp_HS = length(Matrix_Temp_HS_neu)
Laenge_Matrix_HS_komplett = length(Matrix_HS_komplett)

Zaehler_CP_HS=0

for i= 1:1:Laenge_Matrix_Temp_HS
   
    Mittelwert_Intervalle_HS = (Matrix_Temp_HS_neu(i,1)+ Matrix_Temp_HS_neu(i,2))/2
   
    for j= 1:1:Laenge_Matrix_HS_komplett
       
        Werte_zwischen_Grenzen_HS = [ Matrix_HS_komplett(j,1):0.5:Matrix_HS_komplett(j,2)];
        Laenge_Werte_zwischen_Grenzen_HS = length(Werte_zwischen_Grenzen_HS)
       
        if Mittelwert_Intervalle_HS = Werte_zwischen_Grenzen_HS(1,1:Laenge_Werte_zwischen_Grenzen_HS)
           
            Zaehler_CP_HS = Zaehler_CP_HS + Matrix_HS_komplett(j,3)
           
        end
       
    end
       
       
end


 


Ich habe es jetzt mit dieser if Schleife probiert, allerdings addiert diese nichts, obwohl der Zaehler_CP_HS definitiv steigen muss.
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: 06.11.2014, 17:01     Titel:
  Antworten mit Zitat      
Code:
if a=b % falsch = ist eine Zuweisung
if a==b % == ist ein Vergleich


Ich würde mir aber mal die Befehle

Code:


ansehen. Mit find kannst du die Elemente innerhalb deiner Grenzen finden und mit diff kannst du denn Abstand der benachbarten Punkte bestimmen.
Private Nachricht senden Benutzer-Profile anzeigen
 
pescatore265
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 04.11.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.11.2014, 17:03     Titel:
  Antworten mit Zitat      
Ok, danke.

Leider funktioniert das auch mit dem Vergleich nicht :/
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: 06.11.2014, 17:19     Titel:
  Antworten mit Zitat      
Hier mal ein kleines Bsp für einen Vektor:

Code:

val = [0 1 2.5 5 7.5 7.6 8 10 11];
low = 0;
high = 10;
index = low <= val & val <= high; % suche Werte innerhalb der Grenzen
% entspricht: index = find(low <= val & val <= high);
val_limits = val(index); % Werte innerhalb von low und high
eqFactor = mod(val_limits,2.5); % teile durch 2.5, kein Rest = gesuchter Wert
index = find(eqFactor == 0); % suche alle Werte = 0
val_result = val_limits(index);
 
Private Nachricht senden Benutzer-Profile anzeigen
 
pescatore265
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 04.11.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.11.2014, 17:58     Titel:
  Antworten mit Zitat      
Danke für deine HIlfe !

Nur scheinbar bin ich zu blöd das auf mein Problem umzumünzen oder es ist vielleicht nicht das, was ich suche. Ich dachte zwsichenzeitlich, dass mich dein Tipp mit modulo zumindest auf die richtige Straße führt :/

Ich probiere noch einmal mein Problem darzustellen:

Code:

Matrix_Temp_HS = unique(sort([T_Output_HS ; T_Input_HS]))

Matrix_Temp_HS_neu(:,1)= Matrix_Temp_HS(1:size(Matrix_Temp_HS,1)-1)
Matrix_Temp_HS_neu(:,2)= Matrix_Temp_HS(2:size(Matrix_Temp_HS,1))

Matrix_HS_komplett =[T_Output_HS  T_Input_HS CP_HS]

Laenge_Matrix_Temp_HS = length(Matrix_Temp_HS_neu)
Laenge_Matrix_HS_komplett = length(Matrix_HS_komplett)

Zaehler_CP_HS=0

for i= 1:1:Laenge_Matrix_Temp_HS
   
    Mittelwert_Intervalle_HS = (Matrix_Temp_HS_neu(i,1)+ Matrix_Temp_HS_neu(i,2))/2
   
    for j=1:1:Laenge_Matrix_HS_komplett
       
         Werte_zwischen_Grenzen_HS = [ Matrix_HS_komplett(j,1):0.5:Matrix_HS_komplett(j,2)];
         Laenge_Werte_zwischen_Grenzen_HS = length(Werte_zwischen_Grenzen_HS);
         
         Faktor_HS = Werte_zwischen_Grenzen_HS/Mittelwert_Intervalle_HS;
         
         if Faktor_HS == 1;
             
             Zaehler_CP_HS = Zaehler_CP_HS + 1
         end
       
   
    end
       
       
end

 


Ich möchte erreichen, dass mein Zaehler um den j-ten Eintrag der dritten Spalte meiner Matrix_HS_komplett erhöht wird, wenn ein Wert_zwischen_Grenzen genau durch den jeweiligen Mittelwert teilbar, also 1 ergibt, ist. Und ich weiß, dass der Zaehler für i=1 und j=1 definitv einen Wert größer 0 ausspucken muss. Allerdings macht er das nicht. Mit dem Befehl find() komme ich nicht zurecht, entweder weil ich zu dämlich bin diesen zu verstehen und anzuwenden oder weil er nicht genau auf mein Problem passt.
Private Nachricht senden Benutzer-Profile anzeigen
 
pescatore265
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 04.11.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.11.2014, 18:01     Titel:
  Antworten mit Zitat      
Code:

Matrix_Temp_HS = unique(sort([T_Output_HS ; T_Input_HS]))

Matrix_Temp_HS_neu(:,1)= Matrix_Temp_HS(1:size(Matrix_Temp_HS,1)-1)
Matrix_Temp_HS_neu(:,2)= Matrix_Temp_HS(2:size(Matrix_Temp_HS,1))

Matrix_HS_komplett =[T_Output_HS  T_Input_HS CP_HS]

Laenge_Matrix_Temp_HS = length(Matrix_Temp_HS_neu)
Laenge_Matrix_HS_komplett = length(Matrix_HS_komplett)

Zaehler_CP_HS=0

for i= 1:1:Laenge_Matrix_Temp_HS
   
    Mittelwert_Intervalle_HS = (Matrix_Temp_HS_neu(i,1)+ Matrix_Temp_HS_neu(i,2))/2
   
    for j=1:1:Laenge_Matrix_HS_komplett
       
         Werte_zwischen_Grenzen_HS = [ Matrix_HS_komplett(j,1):0.5:Matrix_HS_komplett(j,2)];
         Laenge_Werte_zwischen_Grenzen_HS = length(Werte_zwischen_Grenzen_HS);
         
         Faktor_HS = Werte_zwischen_Grenzen_HS/Mittelwert_Intervalle_HS;
         
         if Faktor_HS == 1;
             
             Zaehler_CP_HS = Zaehler_CP_HS + Matrix_HS_komplett(j,3)
         end
       
   
    end
       
       
end
 


Korrektur der if -Schleife
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.