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

Matrixproblem (Zwischenspeichern bei erschachtelte for sch)

 

Pasha
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 29.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.11.2011, 23:42     Titel: Matrixproblem (Zwischenspeichern bei erschachtelte for sch)
  Antworten mit Zitat      
Hiiii,

ich hab ein Problem bei meinem Projekt.
Es handelt sich um eine Art Hörempfindlichkeitstest, es werden verschiedene Töne abgespielt. Die Töne die gehört wurden müssen für die Grafik später gemerkt werden.

Leider weiss ich nicht wie ich die gehörten Töne abspeichern kann. Ich habe es folgendermaße versucht aber ist nicht eigentl so wie ich es will
Code:

Frequenzen = [500 1000 2000 4000 8000 16000];
     dB =         [-50 -40 -30 -25 -20 -15 -10 -5 0 10];

       Matrix_Freq = zeros(0,0);
       Matrix_dB   = zeros(0,0);
       
       Matrix_Erg = [Matrix_Freq,Matrix_dB];
 
        for db = 1:1:10
           
            for f = 1:1:6
               
               ......% Hier wir das Signal erzeugt und ausgegeben
               
                gehoert = input('\ngehoert    JA = 1  NEIN = 0\nEingabe: ');
               
                if gehoert == 0;
                   disp('Ton nicht gehoert');
               
               
                elseif gehoert == 1;
                    disp('Ton gehoert');
                    Matrix_Freq(:,f) = Frequenzen(f);
                    Matrix_dB(:,db) = dB(db);
                   
                    %Matrix_Erg = [Matrix_Freq Matrix_dB];
               
                end;    
            end;
        end;
 

Das Problem ist bei der nächsten durchlauf von dB werden die Werte Matrix_Freqq überschireben.
Wie kann ich Sie zwischenspeichern, oder hab ihr eine bessere Methode???

Danke
Private Nachricht senden Benutzer-Profile anzeigen


Sirius3
Forum-Guru

Forum-Guru


Beiträge: 441
Anmeldedatum: 11.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.11.2011, 00:21     Titel:
  Antworten mit Zitat      
Hallo Pasha,
wie sollen Deine Ergebnismatrizen aussehen?
Ich bin mir nicht ganz sicher, ob das was ich aus Deinem Code interpretiere
und das was Du wirklich willst, übereinstimmen.

Die Zeilen
Code:
Matrix_Freq = zeros(0,0);
Matrix_dB   = zeros(0,0);
       
Matrix_Erg = [Matrix_Freq,Matrix_dB];

erzeugen sicher nicht das Gewünschte. Die ersten beiden Zeilen weisen
den Variabeln Matrix_Freq bzw. Matrix_dB jeweils eine 0x0-Matrix zu, also
eine Matrix ohne Elemente. Die dritte Zeile erzeugt eine neue Matrix aus den beiden ersten, indem sie die eine 0x0-Matrix an die andere 0x0-Matrix anhängt. Das ergibt eine 0x(0+0)-Matrix. Diese Matrix ändert sich auch
später nicht mehr, da es sich um eine Kopie der beide anderen Matrizen
handelt.

Sollen die Eingaben in Zeilen für die Frequenz und Spalten für die dB eingetragen werden wäre
Code:
Matrix_Freq(f,db) = Frequenzen(f);
Matrix_dB(f,db) = dB(db);

besser.

Grüße
Sirius
Private Nachricht senden Benutzer-Profile anzeigen
 
Pasha
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 29.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.11.2011, 14:29     Titel:
  Antworten mit Zitat      
Erstmals danke für deine schnelle antwort, tut mir leid dass ich mich nicht genau ausdrücken konnte. Ich versuch es mal erneut... also insgesamt sind es 6*10 = 60 Messungen. Die einzelnen Frequenzen der

Die Ausgabe der Töne sind folgendermaßen aus:
1. Ton : bei -50dB mit der Frequenz 500Hz
2. Ton : bei -50dB mit der Frequenz 1000Hz
3. Ton : bei -50dB mit der Frequenz 2000Hz
bis
6. Ton : bei -50dB mit der Frequenz 16000Hz

dann gehts weiter mit der nächsten Lautstärke (dB)
7. Ton : bei -40dB mit der Frequenz 500Hz
bis
12.Ton: bei -40dB mit der Frequenz 16000Hz
usw

Nun muss ich die gehörten Töne bei welcher Lautstärke(dB) mit welcher Frequenz speichern.

Mein ErgenbisMatrix muss aus 2 Zeilen bestehen zB:
Freq: 500 1000 2000 4000 8000 16000
dB : -40 -30 -30 -30 -25

hier : bei -40dB wurde nur die Freq 500Hz gehört, wobei bei -30dB drei Frequenzen gehört wurden

Bei der Methode ist das Problem dass bei der nächsten Messung z.B bei -30dB die vorigen Messungen überschrieben werden, ich weiss wiklich nicht wie ich es übergehen könnte
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 28.11.2011, 14:50     Titel:
  Antworten mit Zitat      
führ einfach ne zähl variable ein die bei gehört um 1 erhöht wird.
Code:
Frequenzen = [500 1000 2000 4000 8000 16000];
     dB =         [-50 -40 -30 -25 -20 -15 -10 -5 0 10];

       j=1
        for db = 1:1:10
           
            for f = 1:1:6
               
               ......% Hier wir das Signal erzeugt und ausgegeben
               
                gehoert = input('\ngehoert    JA = 1  NEIN = 0\nEingabe: ');
               
                if gehoert == 0;
                   disp('Ton nicht gehoert');
               
               
                elseif gehoert == 1;
                    disp('Ton gehoert');  
                   Matrix_Erg(j,1) = Frequenzen(f)      
                   Matrix_erg(j,2)=dB(db)
                   j=j+1
                end;    
            end;
        end;
   

 
Private Nachricht senden Benutzer-Profile anzeigen
 
Pasha
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 29.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.11.2011, 22:13     Titel:
  Antworten mit Zitat      
Leute danke sehr für eure Hilfe,
manchmal sieht man den Wald voller Bäume nicht "grins"...
Alles hat soweit geklappt habe aber ein kleines Problem hab ich noch...
und zwar mit dem plotten, klappts nicht so wie ich es will...

in xAchse kommen die Frequenzen und in die yAchse die dB Werte.
Ich würde gerne eine Standart Skalierung haben unabh. von den Werten, denn nach jeder Messung sieht die Skalierung anders aus....
also auf die xAchse sollen nur die Werte ausgeben werden natürlich mit einer vernünftigen abstand zwischen den Werten.

xAchse: (0-500-1000-2000-4000-8000-16000)Hz d.h nur die Werte bei den gemessen wurde
yAchse: (-50--45--40.....10)dB
habe es zurletzt mit der Methode versucht, geht auch nicht
Code:

%Matrix_Erg(Frequenzen;dB)   Meine Matrix

plot(Matrix_Erg(1,:),Matrix_Erg(2,:),'O','MarkerSize', 12);
    grid on;
    %set(gca,'XTick',[0:500:16000]);
    %set(gca,'YTickLabel',['500';'1000';'2000';'4000';'8000';'16000']);
    xlabel('Frequenz in Hz');
    ylabel('Lautstaerke in dB');
    title('Hoerempfindlichkeitstest');


danke
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.