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

PLOT in schleife

 

f0s
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 30.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.10.2008, 19:17     Titel: PLOT in schleife
  Antworten mit Zitat      
hallo

unten soll er bei klirrfaktor mir das im bezug zu dem p wert (der großen schleife) ausgeben,
leider macht er ganz viele fenster auf (wenn ich figure da vor setzte)
die ausgabe der werte stimmt

Klirrfaktor: 8.04 %
P: 1.00 %
Klirrfaktor: 5.27 %
P: 2.00 %
Klirrfaktor: 3.88 %
P: 3.00 %
Klirrfaktor: 3.04 %
P: 4.00 %
Klirrfaktor: 2.49 %
P: 5.00 %
Klirrfaktor: 2.11 %
P: 6.00 %
Klirrfaktor: 1.82 %
P: 7.00 %
Klirrfaktor: 1.60 %
P: 8.00 %
Klirrfaktor: 1.42 %
P: 9.00 %
Klirrfaktor: 1.28 %
P: 10.00 %
>>

--

ich will einfach diese werte in einem plot dargestellt haben

danke für die hilfe

Code:
clear ; close all; clc;

flag = 0; % 0 Cosinus Eingangssignal, Klirrfaktor berechnen
          % 1 WAV Datei als Eingangssignal

fa = 44100; % Abtastfrequenz für zeitdiskrete Verarbeitung
ta = 1/fa;  % Abtastintervall
f0 = 1000;  % Grundfrequenz (für cos-Signal)
tp = 1/f0;  % Periodendauer
U0 = 1;

switch flag
    case 0
       tmax = 1;              % Dauer des Tons
       t = (0:ta:tmax).';     % Zeitachse
       y = U0*cos(2*pi*f0*t); % cos Eingangssignal
       N = length(y);         % Anzahl der Abtastwerte
    case 1
       y = wavread('Second_Unit_Jazz_-_Fly_Me_To_The_Moon.wav'); % WAV file einlesen
       y = y/max(y)*4;      % Normierung auf Maximalamplitude 4
       N = length(y);       % Anzahl der Abtastwerte
       tmax = (N-1)*ta;     % Dauer des Sound-files
       t = (0:ta:tmax).';   % Zeitachse
end

% Verstärkerkennlinien modellieren
% ideal
ue1 = linspace(-4,4,500); % Quantisierung des Verstärkungsbereichs
ua1 = ue1;    % Verstärkung um Faktor 1
z1 = y;       % Ausgangssignal = Eingangssignal

% nicht ideal

% ===============================================================
% ergänzen Sie hier entsprechend das Rapp Modell
%
% ===> p = 1; % Nichtlinearitätsparameter
% ===> ua2 = Funktion von ue1

for p=1:10
   
  l(p)=p+1;
 
  ua2 = ue1./(1+(ue1).^(2.*p)).^(1./(2.*p));

   


% in diesem Fall sollte sich der Klirrfaktor zu 0 ergeben
% tatsächlich erscheint 0.1% aufgrund von Quantisierungsfehlern
%
% ===============================================================


figure % Verstärkerkennlinien darstellen
scatter(ue1, ua1); grid on; hold on;
scatter(ue1, ua2); xlabel('u_e(t) / V'); ylabel('u_a(t) / V'); hold off;
title('Verstärkerkennlinie');

z2=zeros(N,1); z3=zeros(N,1); % Initialisierung (wichtig für Laufzeit der Schleife)
h = waitbar(0,'Verstärker simulieren ...'); % Fortschrittsbalken anzeigen
for n=1:N
    if n/1000 == round(n/1000)
        waitbar(n/N,h);     % Fortschrittsbalken hochzählen
    end    
    idx1 = find(ue1<=y(n)); % Verstärkung über look-up table
    z2(n) = ua2(idx1(end));
    % Bei Eingangsamplituden <0.5 V spielen hier auch Quantisierungseffekte
    % eine Rolle
end
close(h) % Fortschrittsbalken löschen


figure; % unterschiedliche Ausgangssignale anzeigen
h1 = plot(t,[z1 z2]); grid on;
set(h1,'linewidth',2); xlabel('t / s'); ylabel('u_a(t)'); title('Ausgangssignal');
legend('ideal','verzerrt');
axis([0 2*tp -4 4]);

switch flag
    case 0 % Cosinus Eingangssignal
       
       % Frequenzbereich, C(u):
       f = (0:1:N-1).*(fa/N);
       Z1 = real(fft(z1))/N; % C(u) berechnen (hier über DFT)
       Z2 = real(fft(z2))/N;
       figure
       subplot(211) % Ideal
       h1 = plot(f,Z1); set(h1,'linewidth',2); title('Ideal');ylabel('C(\mu)');
       grid on; axis([0 10e3 -0.3 2.3]);
       subplot(212) % Verzerrt
       h1 = plot(f,Z2); set(h1,'linewidth',2,'color',[0 0.5 0]); title('Verzerrt');ylabel('C(\mu)');xlabel('f / Hz');
       grid on; axis([0 10e3 -0.3 2.3])
       
     
       
       % Klirrfaktor berechnen

       Ueffstoer = Z2(2001:1000:round(N/2))*sqrt(2); % Effektivwerte der Störung
       Ueff = Z2(1001:1000:round(N/2))*sqrt(2);      % alle Effektivwerte
       k = sqrt(sum(Ueffstoer.^2) / sum(Ueff.^2)); % Klirrfaktor berechnen
       fprintf('Klirrfaktor: %5.2f %% \n',k*100); % Ausgabe
       fprintf('P: %5.2f %% \n',p); % Ausgabe
       
           
           
            t5= k*100;
            hold on
            plot(t5,p);
            hold off
           
           
           
       
           

       
       
       z1 = z1 ./ max(abs(z1)); z2 = z2 ./ max(abs(z2)); % Normierung für WAV Format
       wavplay(z1,fa); wavplay(z2,fa); % Ausgabe
   
   

 
    case 1
       z1 = z1 ./ max(abs(z1)); z2 = z2 ./ max(abs(z2)); % Normierung für WAV Format
       wavplay(z1,fa); wavplay(z2,fa); % Ausgabe
       %wavwrite(z2,fa,'result.wav');
end      

end
Private Nachricht senden Benutzer-Profile anzeigen


Maddy
Ehrenmitglied

Ehrenmitglied



Beiträge: 494
Anmeldedatum: 02.10.08
Wohnort: Greifswald
Version: ---
     Beitrag Verfasst am: 30.10.2008, 21:41     Titel:
  Antworten mit Zitat      
"figure" öffnet immer ein neues Fenster, also musst du ihm einen "Namen" geben Wink

Der Knackpunkt liegt ja jetzt an der Stelle, wenn ich mich nicht irre:

Code:
 t5= k*100;
            hold on
            plot(t5,p);
            hold off
 


Versuchs mal so:

Code:

newT5=[];
newP=[]; % am besten oben vor allen Schleifen

.
.
.

  t5= k*100;
 newT5=[newT5 t5];
 newP=[newP p];
            figure(100) % so schreibt er den plot immer ins selbe Fenster mit nummer 100
            hold on
            plot(newT5,newP);
            hold off

 


Es würde auch reichen, wenn du erst ganz am Ende der Datei einmal den plot ausführst.
_________________

>> why
The computer did it.
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 - 2024 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.