How to plot the signal having convolution in frequency domain?

조회 수: 1 (최근 30일)
TEOH CHEE JIN
TEOH CHEE JIN 2022년 12월 27일
댓글: TEOH CHEE JIN 2022년 12월 27일
I am doing a signal project to perceive the signals undergoing convolution, modulation and demodulation.
The MATLAB script is attached below. The signal of a(t), b(t), c(t), d(t) and e(t) are defined in the script.
The operation of the signal is shown in the figure below, where the signal operation is x(0.4t).
However, I am having issue in plotting the signal of B in frequency domain, B(w). The figure does not plot B(w) like what a(t) and A(w) did.
I have performed manual calculation and understood that b(t) is just shifting to right by 0.02 after having convolution with h(t).
And in frequency domain, time shifting does not affect the amplitude spectrum in frequency domain, which means that B(w) should be similar to A(w). So the script should be identical as well, but B(w) ends up with unknown issue and it could not be plotted.
Script:
%create symbolic functions x, a, b, c, d, e, f_c with independent variable t
syms x(t) a(t) h(t) b(t) c(t) d(t) e f_c(t) f_c1(t) f_c2(t) t tau
%create symbolic functions A, B, C, D, and E with independent variable w
syms A(w) B(w) C(w) D(w) E(w)
x(t) = cos(100*pi*t);
a(t) = x(0.4*t);
h(t) = dirac(t-0.02);
b(t) = int(a(tau)*h(t-tau), 'tau', -inf, inf);
f_c(t) = 10*cos(2500*pi*t);
f_c1(t) = f_c(t);
f_c2(t) = f_c(t);
c(t) = b(t)*f_c1(t);
d(t) = c(t)*f_c2(t);
figure
subplot (2,1,1)
fplot(a(t))
xlim([-0.05 0.05]),ylim([-1.5 1.5])
title ('Time domain of signal a(t)')
xlabel('Time, t')
ylabel('Amplitude, a(t)')
grid on
A(w) = fourier(a(t), w);
w = -45*pi:0.1*pi:45*pi;
subsA = A(w);
% Replace Inf value with suitable value
idx = subsA == Inf;
subsA(idx) = pi; % choose suitable value from the expression of fourier transform.
subplot (2,1,2)
plot(w,real(subsA));
ylim([0 3.5])
title ('Time domain of signal A(\omega)')
ylabel("\Re(A(\omega))");
xlabel("\omega");
xticks(-40*pi:20*pi:40*pi);
xticklabels({'-40\pi', '-20\pi', '0', '20\pi', '40\pi'})
figure
subplot(2,1,1)
fplot(b(t))
xlim([-0.05 0.05]),ylim([-1.5 1.5])
title ('Time domain of signal b(t)')
xlabel('Time, t')
ylabel('Amplitude, b(t)')
grid on
B(w) = fourier(b(t), w);
simplify(B(w))
w = -45*pi:0.1*pi:45*pi;
subsB = B(w);
% Replace Inf value with suitable value
idx = subsB == Inf;
subsB(idx) = pi; % choose suitable value from the expression of fourier transform.
subplot (2,1,2)
plot(w,real(subsB));
ylim([0 3.5])
title ('Time domain of signal B(\omega)')
ylabel("\Re(B(\omega))");
xlabel("\omega");
xticks(-40*pi:20*pi:40*pi);
xticklabels({'-40\pi', '-20\pi', '0', '20\pi', '40\pi'})
How should I correct my script so that I can produce B(w) graph like what I did for the A(w) signal? Thanks.

채택된 답변

Hiro Yoshino
Hiro Yoshino 2022년 12월 27일
편집: Hiro Yoshino 2022년 12월 27일
Look like you are dealing with the equations symbolically - I wonder if this is what you really want to do.. anyway.
Note this is the way to manupulate things with explicit equations so all the variables, equations and functions should be given symbollically. In this sense what you missed was the definition of "w" just before passing it to fourier(b(t), w). So you should re-define a symbolic w since you converted it as a normal MATLAB variable before:
syms w;
B(w) = fourier(b(t), w);
simplify(B(w))
....
This allows you to run through the script. Good luck.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Number Theory에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by