简单画一维函数曲线
clear all;
close all;
t= 0:0.01:10*pi;
A=1;
a=-0.4;
ft=cos(a*t);
st=sin(a*t);
axis([-40,5,-2,2]);
plot(t,ft);
title('f(t)=cos(a*t)');
subplot(2,1,1);
plot(t,ft);
xlabel('w');
ylabel('F1(jw)');
title(' ft=cos(a*t)');
subplot(2,1,2);
plot(t,st);
xlabel('w');
ylabel('F1(jw)');
title(' st=sin(a*t)');
画幅频曲线
b0 = 0.05634;
b1 = [1 1];
b2 = [1 -1.0166 1];
a1 = [1 -0.683];
a2 = [1 -1.4461 0.7957];
b = b0*conv(b1,b2);
a = conv(a1,a2);
[h,w] = freqz(b,a,'whole',2001);
plot(w/pi,20*log10(abs(h)))
ax = gca;
ax.YLim = [-100 20];
ax.XTick = 0:.5:2;
xlabel('Normalized Frequency (\times\pi rad/sample)')
ylabel('Magnitude (dB)')
画信号和频谱
离散信号
Fs = 1000; % Sampling frequency
T = 1/Fs; % Sampling period
L = 10; % Length of signal
t = (0:L-1)*T; % Time vector
S = sin(2*pi*120*t);
plot(t,S)
title('Signal')
xlabel('t (milliseconds)')
ylabel('X(t)')
DFS
%{
使用单个输入参数 x 的 fft 计算输入向量或矩阵的 DFT。如果 x 是向量,fft 计算向量的 DFT;如果 x 是矩形数组,fft 计算每个数组列的 DFT。
%例如,创建时间向量和信号:
%}
t = 0:1/100:1-1/100; % Time vector
x = sin(2*pi*5*t) + sin(2*pi*40*t); % Signal
%计算信号的 DFT 以及变换后的序列的幅值和相位。通过将小幅值变换值设置为零来减少计算相位时的舍入误差。
y = fft(x); % Compute DFT of x
m = abs(y); % Magnitude
y(m<1e-6) = 0;
p = unwrap(angle(y)); % Phase
%要以度为单位绘制幅值和相位,请键入以下命令:
f = (0:length(y)-1)*100/length(y); % Frequency vector%归为0~100的量
subplot(3,1,1)
plot(t,x)
xlabel('n');
ylabel('x(n)');
title('Signal')
subplot(3,1,2)
plot(f,m)
xlabel('w');
ylabel('|F1(jw)|');
title('Magnitude')
ax = gca;
%ax.XTick = [15 40 60 85];
subplot(3,1,3)
plot(f,p*180/pi)
xlabel('w');
ylabel('arg(F1(jw))');
title('Phase')
%ax = gca;
%ax.XTick = [15 40 60 85];
转载:https://blog.csdn.net/FourierFisher/article/details/116848592
查看评论