Frequency domenet representasjon av tid domene signal (Matlab

  • Thread starter moonnightingale
  • Start date
M

moonnightingale

Guest
Jeg vil ha frekvens domene representasjon som er Fourier-transformere et signal.For eksempel Jeg har funksjon Cos (t).Hvis jeg reprsent i frekvens domian jeg vil ha to pulser én (f - for) og andre i (f for).Hvordan kan jeg se dette i Matlab.plz hjelp

 
Velkommen til Matlab!Du vil finne at det er svært nyttig for denne typen analyse.Det har mange innebygde funksjoner for å transformere mellom frekvens og tid domene.

Det ting å huske er at Matlab ikke alt tallmessig, ikke symbolsk.Som et resultat du vanligvis ender opp opererer med serie av data lagret i vektorer.

Her er et eksempel jeg satt sammen for deg.Vi definerer en cosinus bølge med en frekvens på 10 Hz.Vi utfører deretter et Fourier tranfsorm og vise dens frekvens innholdet.Som forventet, ser vi to topper, en i -10 Hz, og den andre på 10 Hz.Du kan kopiere og lime alt under direkte inn i kommandolinjen, eller det ville være bedre å lime den inn og m-fil.% Definer antall prøver å ta
number_of_samples = 2 ^ 10;
cosineFreq = 10;% Hz

% Definer signal
t = linspace (0, 10, number_of_samples);
signal = cos (2 * pi * cosineFreq * t);

% Plot å illustrere at det er en sinuskurve
plot (t, signal);
title ( 'Time-Domain signal');

% Take Fourier transform
fftSignal = FFT (signal);

% gjelder fftshift å putte den i form vi er vant til (se dokumentasjon)
fftSignal = fftshift (fftSignal)

% Deretter beregne frekvens aksen, som er definert av samplingsfrekvensen
T = t (2)-t (1);
fs = 1 / T;
f = fs / 2 * linspace (-1,1, number_of_samples);

% Siden signalet er sammensatt, må vi plotte størrelsen for å få det til
% se til høyre, så vi bruker abs (absoluttverdi)
Figuren
plot (f, abs (fftSignal));
title ( 'størrelsesorden FFT av cosinus');
xlabel ( 'Frekvens (Hz)');
ylabel ( 'størrelse');

 
Tusen takk for ur detaljert svar.
Kanne u vennligst forklare meg disse tre trinnene

T = t (2)-t (1);
fs = 1 / T;
f = fs / 2 * linspace (-1,1, number_of_samples);

Hvorfor vi bruker disse og ikke denne regelen holder bra for hver frekvens.selv for 10000 HZ takk alot.

 
I virkeligheten er Matlab ikke gir en sann Fourier transform.Snarere er det å utføre en diskret Fourier transform.

For å utvetydig måle en frekvens, må du ta minst to prøver per periode.Dette betyr at min samplingsfrekvens begrenser hvor høy frekvens jeg kan måle.

Den maksimale frekvens er bare 1 / 2 min samplingsfrekvens.

Dette er en iboende begrensning DFTs.Det er sant for noen frekvensområdet.For å kunne måle høye frekvenser, du må bare øke samplingsfrekvensen til to ganger den høyeste frekvensen du forventer å måle.

fs er samplingfrekvens av tidsserier.I deler av to og som setter frekvensområdet.

 
Tusen takk for nytt detaljert svar.du er virkelig god i matlab og kommunikasjon.
En siste ting jeg ikke kunne forstå kravet om fftshift.
Hva er den viktigste function.If du vennlige å forklare meg.Takk

 
I siste del av prosjektet mitt Bandpass modulering jeg må gjøre dette trinnet

(iii) resultatene sammenligning av simulerte kurva g. teoretiske kurven sammen med tid og frekv.domene representasjon av signaler ....

Kanne u Guide meg for dette trinnet, og viser noe lesestoff.Da jeg spurte min instruktør abt frekvens domian analyse fortalte han meg

Av freq domene analyse ... baseband signal freq respons bør ses i frekvens rundt null ... og upconverted signal rundt hangarskipet freq

Kanne u gir sitt eksempel

 
Når Matlab beregner FFT, arrangerer frekvensen aksen med f = 0 (dvs. DC komponent) som startpunkt.

Vi er vant til å se DC i midten av grafen, så alle fftshift ikke swap er venstre og høyre halfs av dataene slik at null frekvens delen er i midten.

Dette er godt å huske på hvis du noen gang beregne ifft (inverse Fourier transform), fordi måten Matlab ønsker inndata er ikke på samme måte som du er vant til.

Her er et eksempel ser på en Amplitude-Modulated signal.Forhåpentligvis kan den få deg i gang med å arbeide med andre typer modulasjon.%---------------------------------------
lukk alle
% Set my samplingfrekvens
fs = 2 ^ 15;

% definere ett sekund i tid samplet hver fs
t = linspace (0, 1, fs);

% define datarate (hvor mange biter / sekund)
datarate = 2 ^ 6;% Baseband signal
binOne = dem (1, fs / datarate);
binZero = zeros (1, fs / datarate);

% Jeg sender ascii for'$$$$$$$$' å vise hvor mye penger vi vil alle være å gjøre som
% ingeniører
asciiDollarSign = ([binZero binZero binOne binZero binZero binOne binZero binZero]);
basebandsignal = repmat (asciiDollarSign, 1, 8);

% Baseband ANALYSE ----------------------------------------------- ---------
Figuren
plot (t, basebandsignal);
title ( 'Dette er hva baseband signal ser ut som')
xlabel ( 'tid (sek)');
ylabel ( 'amplitude (v)');
axis ([0 1 -. 5 1,5]);

f = fs / 2 * linspace (-1, 1, fs);

basebandFFT = fftshift (FFT (basebandsignal));
Figuren
plot (f, abs (basebandFFT));
title ( 'Frekvens innhold Baseband Signal');
xlabel ( 'Frekvens (Hz)');
ylabel ( 'Magnitude');
%------------------------------------------------- -------------------------% Bærefrekvens ANALYSE ---------------------------------------------- --

% Nå skape vår mudulated signal
carrierFreq = 2 ^ 12;

carrierWave = cos (2 * pi * carrierFreq * t);

% Amplitudemodulasjon
modulatedsignal = carrierWave .* basebandsignal;

Figuren
plot (t, modulatedsignal);
title ( 'Amplitude modulert signal');
xlabel ( 'tid (sek)');

% Find frekvens innhold
modulatedsignalFFT = fftshift (FFT (modulatedsignal));

Figuren
plot (f, abs (modulatedsignalFFT));
title ( 'Frekvens innholdet Amplitude Modulated Signal');
xlabel ( 'Frekvens (Hz)');
ylabel ( 'Magnitude');
%------------------------------------------------- -------------------------

 
hei,
Takk for oppmerksomheten,
Jeg har skrevet en kode for FFT med data vinduet.Størrelsen av responsen er svært høy.
Jeg har lagt min kode.Vennligst du finne min feil.
mitt signal er en ikke-stasjonære bølger.

CLC
Fs = 1e8;
fftLength = 5000;
% Beregner windowed FFT (lengde fftlen, med 50% overlapping),
% Så inverse FFT med overlapp-add.Hvis ingen behandling er satt inn
% I funksjonen nedenfor, bør resultatet være identisk
% Til inngangen.
i = i (

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Smil" border="0" />

;
% Lag output buffer for overlapping add
xx = zeros (1, length (in));
% Lag lengde "fftlen" hevet cosinus vindu funksjon
Vinden = 0,5 * (1-cos (2 * pi * (0: fftLength-1) / fftLength));
for i = 1: fftLength 2 / (length (in)-fftLength)
ff = fft (Windows * i (i

<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="Trist" border="0" />

i fftLength-1)) ', fftLength);
z = abs (ff);
xx (i

<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="Trist" border="0" />

i fftLength-1)) = xx (i

<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="Trist" border="0" />

i fftLength-1)) ifft (ff, fftLength);
slutt
Figuren
semilogx ([0: fftLength-1] * Fs / fftLength, abs (ff))
Figuren
plot (xx)

 
AndyECE jeg har sendt u melding i PM
vennlige lese den takk

 
Guys - Ingenting personlig, men jeg er ikke interessert i PMing hverandre.Jeg er her for å bidra til forumet ved å hjelpe introdusere deg for signalbehandling i Matlab på en praktisk måte.

Jeg er ikke her har du email meg koden for å feilsøke.Har dere har en link til en referanse for hva du prøver å gjennomføre?Det er vanskelig å se på når du ikke er positivt hva som skal skje

 
AndyECE skrev:

Guys - Ingenting personlig, men jeg er ikke interessert i PMing hverandre.
Jeg er her for å bidra til forumet ved å hjelpe introdusere deg for signalbehandling i Matlab på en praktisk måte.Jeg er ikke her har du email meg koden for å feilsøke.Har dere har en link til en referanse for hva du prøver å gjennomføre?
Det er vanskelig å se på når du ikke er positivt hva som skal skje
 

Welcome to EDABoard.com

Sponsor

Back
Top