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

Rapp-Modell ?!

 

f0s
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 30.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.10.2008, 16:17     Titel: Rapp-Modell ?!
  Antworten mit Zitat      
[URL="http://img526.imageshack.us/img526/9149/aufgabescreenienz6.jpg"]http://img526.imageshack.us/img526/9149/aufgabescreenienz6.jpg[/URL]

hallo!

meine frage, was ist das rapp-modell? und wie implementiere ich es?!


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
%
ua2 = ue1; % diese Zeile kann dann gelöscht werden
% 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
       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        


danke
Private Nachricht senden Benutzer-Profile anzeigen


f0s
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 30.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.10.2008, 17:35     Titel:
  Antworten mit Zitat      
habs gefunden nur kommen nun fehler:

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
%

ua2 = (ue1/((1+(ue1.^10))).^(1./10));

% 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
       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        

 


??? Error using ==> scatter at 54
X and Y must be vectors of the same length.

Error in ==> klirrfaktor_studenten_1 at 71
scatter(ue1, ua2); xlabel('u_e(t) / V'); ylabel('u_a(t) / V'); hold off;

>>
Private Nachricht senden Benutzer-Profile anzeigen
 
derOli
Forum-Meister

Forum-Meister


Beiträge: 579
Anmeldedatum: 19.03.08
Wohnort: Leipzig
Version: 2010a
     Beitrag Verfasst am: 30.10.2008, 17:49     Titel:
  Antworten mit Zitat      
Code:

ua2 = (ue1/((1+(ue1.^10))).^(1./10));
 


ersetzen durch
Code:

ua2 = (ue1./((1+(ue1.^10))).^(1./10));
 


Der Punkt vor dem durch fehlte noch. Deswegen hatte ua2 nur einen wert und nicht 500, deswegen nicht gleiche Länge.

Grüße,

der Oli
Private Nachricht senden Benutzer-Profile anzeigen
 
f0s
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 30.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.10.2008, 18:04     Titel:
  Antworten mit Zitat      
hab nen neues problem:


der klirrfaktor soll als funktion von p dargestellt werden, und p halt von 1 bis 10 laufen.

hab schon ne schleife eingebaut, aber hab keine ahnung wie ich das plotten soll bzw alle klirrfaktoren dargestellt werden

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
  k(p)=p+1;
 
  ua2 = ue1./(1+(ue1).^(2.*p)).^(1./(2.*p));
   
end



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