天天看點

matlab中給複數取模值,[轉載]matlab對複數的顯示問題

1、有關matlab對複數的顯示問題:

複數畫圖

當plot(z)中的為複數單變量時,即相當于plot(real(z),imag(z))。即z=a+j*b,那麼繪出的圖x軸為a,y軸為b,y軸即為j虛軸;

For example:

>> t=0:0.1:2;

>> y=2*t.^2+j*3*t;

>> plot(y);

matlab中給複數取模值,[轉載]matlab對複數的顯示問題

此圖橫坐标為real(y),豎坐标為imag(z)

>> 2*t.^2

ans =

Columns 1 through 11

0 0.0200 0.0800 0.1800 0.3200 0.5000 0.7200 0.9800 1.2800 1.6200 2.0000

Columns 12 through 21

2.4200 2.8800 3.3800 3.9200 4.5000 5.1200 5.7800 6.4800 7.2200 8.0000

>> y

y =

Columns 1 through 7

0 0.0200 + 0.3000i 0.0800 +

0.6000i 0.1800 +

0.9000i 0.3200 +

1.2000i 0.5000 +

1.5000i 0.7200 + 1.8000i

Columns 8 through 14

0.9800 +

2.1000i 1.2800 +

2.4000i 1.6200 +

2.7000i 2.0000 +

3.0000i 2.4200 +

3.3000i 2.8800 +

3.6000i 3.3800 + 3.9000i

Columns 15 through 21

3.9200 +

4.2000i 4.5000 +

4.5000i 5.1200 +

4.8000i 5.7800 +

5.1000i 6.4800 +

5.4000i 7.2200 +

5.7000i 8.0000 + 6.0000i

如果是雙變量如plot(t,z),則z中的虛數部分将被丢棄。

>>plot(t,y);

此圖橫坐标為t,縱坐标為y,  y=t.^2; 即此圖t對應y的實部。

matlab中給複數取模值,[轉載]matlab對複數的顯示問題

二維繪圖

線性直角坐标系中其他形式繪圖的指令有stem(繪脈沖圖),stairs(繪階梯圖)。scatter(t,y,’.’) (繪離散點圖)

時域有關顯示:

t=0:0.1:10;

>> y=sin(pi*t);

>> plot(y);

matlab中給複數取模值,[轉載]matlab對複數的顯示問題

此圖橫坐标對應t=0:0.1:10的第幾個離散資料,1為第一個離散資料即0,2為第二個離散資料即0.1,……………100為第一百個離散資料即9.9。縱坐标為橫坐标的具體數值對應的y,即0-à0, 6(第六個離散值)--à1,等等;

plot(t,y);

matlab中給複數取模值,[轉載]matlab對複數的顯示問題

橫坐标就是真實的t值,縱坐标就是所對應的y值。

頻域顯示坐标

close all; %先關閉所有圖檔

Adc=2; %直流分量幅度

A1=3; %頻率F1信号的幅度

A2=1.5; %頻率F2信号的幅度

F1=50; %信号1頻率(Hz)

F2=75; %信号2頻率(Hz)

Fs=256; %采樣頻率(Hz)

P1=-30; %信号1相位(度)

P2=90; %信号相位(度)

N=256; %采樣點數

t=[0:1/Fs:N/Fs]; %采樣時刻

%信号

S=Adc+A1*cos(2*pi*F1*t+pi*P1/180)+A2*cos(2*pi*F2*t+pi*P2/180);

%顯示原始信号

plot(S);

title('原始信号');

figure;

Y = fft(S,N); %做FFT變換

Ayy = (abs(Y)); %取模

plot(Ayy(1:N)); %顯示原始的FFT模值結果

title('FFT 模值');

figure;

Ayy=Ayy/(N/2); %換算成實際的幅度

Ayy(1)=Ayy(1)/2; %直流量不同與其他

F=([1:N]-1)*Fs/N; %換算成實際的頻率值 ,等同于F=(0:N)*Fs/N;

plot(F(1:N/2),Ayy(1:N/2)); %顯示換算後的FFT模值結果

title('幅度-頻率曲線圖');

matlab中給複數取模值,[轉載]matlab對複數的顯示問題
matlab中給複數取模值,[轉載]matlab對複數的顯示問題
matlab中給複數取模值,[轉載]matlab對複數的顯示問題

這個相對清楚些

%采樣點數要不小于采樣頻率,否則會出錯(自己寫的)

fs=5120;%采樣頻率為1000Hz;

N=1024;

t=0:1/fs:N/fs;

x=3*cos(2*pi*53*t); %産生正弦波信号;

subplot(2,1,1)

plot(t(1:50),x(1:50)); %畫出時域内的信号前50個采樣點;

Y=fft(x,N); %對X進行512點的傅立葉變換;

Y1=abs(Y);

Y2=Y1/(N/2); %換算成實際的幅度

f= (0:N)*fs/N; %設定頻率軸(橫軸)坐标,1000為采樣頻率;fs/N是每個采%樣點對應的頻率,*(0:N)為了讓頻率從0開始表示。

subplot(2,1,2)

plot(f(1:257),Y2(1:257)); %畫出頻域内的信号