mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP digital - analog wandler matlab


Autor: chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich schreibe ein m-File mit dem ich mir die funktinsweise von DLS ein 
bischen verständlich machen will.

also so weit bin ich schon:

1. Mehrträgerverfahren, ich möchte es einfach mal mit zwei "Trägern"
   versuchen.
   je nachdem ob der Kanal zum jeweiligen Träger gut oder schlecht ist
   können mehr Bits drauf übertragen werden oder weniger.
   (also M-Qam mit M = 4..32768)
   ... bei M = 4 werden also 2 Datenbit zu einem Symbol
   zusamengefasst. Das Symbol ist dann eine komplexe Zahl zb 1+j.
   Der komplexe Wert wird vom Frequnzbereich  in den Zeitbereich per 
ifft
   gewandelt.
   Da es mehrere Kanäle gibt passiert das bei mir also zweimal.
   Die Werte im Zeitbereich sind also Abtastwerte, diese werden jetzt 
für
   alle Kanäle (Träger) addiert.

Jetzt zu meinem Eigentlichen Problem bzw. hab ich da ein denkfehler ?
Wie mach ich aus den digitalen Abtastwerten analoge Signale ?

Also grundsätzliche Frage : Digital Analog Wandlung in Matlab (m-file, 
kein Simulink)

Die analogen Signale sollen dann über ein Kanal gehen und auf der 
anderen Seite analog digital gewandelt werden. Dann FFT usw ..... also 
demod ....


ist also ne reine Matlab Frage , nix mit dsp oder so ... hoffe es war 
verständlich was ich will ? .... wenn nicht fragt doch einfach nach ....

soweit mein code xges ist also das digitale signal ("die abtastwerte")



%%%%%%%%%%% qammod(x,M) 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% y = qammod(x,M) outputs the complex envelope y of the modulation of 
the
% message signal x using quadrature amplitude modulation. M is the 
alphabet
% size and must be an integer power of 2. The message signal must 
consist
% of integers between 0 and M-1. The signal constellation is rectangular 
or
% cross-shaped, and the nearest pair of points in the constellation is
% separated by 2. If x is a matrix with multiple rows, then the function
% processes the columns independently.

%%%%%%%%%%% randint(m,n,rg) 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% out = randint(m,n,rg) generates an m-by-n integer matrix. If rg is 
zero,
% then out is a zero matrix. Otherwise, the entries are uniformly
% distributed and independently chosen from the range
% [0, rg-1] if rg is a positive integer
% [rg+1, 0] if rg is a negative integer
% Between min and max, inclusive, if rg = [min,max] or [max,min]

% Ein Kanal 5000 Symbole
% 4 Bit auf dem Kanal = 16 Symbolen
M = 16; % Alphabet size  16 - QAM
x = randint(5000,1,16); % Message signal

Y = qammod(x,M);      % Frequenzbereich
scatterplot(Y);

x=ifft(Y);                 % Umwandlung Frequenzbereich -> Zeitbereich 
(ifft)

a=1:1:5000

% zweiter Kanal
M2=4;
Symbole = randint(5000,1,M2); % Message signal

Y2 = qammod(Symbole,M2);      % Frequenzbereich
scatterplot(Y2);

x2=ifft(Y2);                 % Umwandlung Frequenzbereich -> Zeitbereich 
(ifft)
figure(5)
plot(a,x','b*');
hold on
plot(a,x2','r.');
hold on;
xges= x+x2;
plot(a,xges','y');

Autor: Sergej Schikowski (sergo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich glaube man kann in Matlab Signale über eine Soundkarte 
ausgeben.
Wie es genau geht weiß ich nicht. Must du in der Hilfe mal stöbern.

MfG

Autor: Schmidt Thoralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das geht mit der Data Acquisition Toolbox...
(DAQ)
ao = analogoutput('winsound');
get(ao) damit kann man sich dann alle "Stellschrauben" anzeigen lassen
putdata(data_Spaltenvektor)
start(ao)

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So wie ich ihn verstehe will er eine A/D bzw D/A Wandelung simulieren, 
und nicht tatsächlich ausführen.
Ich habe das mal mit der Funktion uencode für A/D Wandelung und udecode 
für D/A Wandelung gemacht. Die quantisieren auf das Signal auf die 
gewünschte Anzahl von Bits.
Brauchst dazu aber die Signal Processing Toolbox.
Wenn du die nicht hast, kannst du sone Funktion auch schnell selbst 
schreiben, das dürfte nicht so schwer sein.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.