how to create fourier transform and laplace from basic signals?
27 ビュー (過去 30 日間)
古いコメントを表示
Mya
2022 年 1 月 22 日
回答済み: Alagu Sankar Esakkiappan
2022 年 1 月 25 日
fprintf('Please choose any type of signal below.\n1. Impulse\n2. Step function\n3. DC Source\n4. Signum function\n5. Rising exponent function\n6. Cosine function\n7. Sine function\n8. Square function\n9. Triangular function\n10. Symmetrical decaying exponent function')
s=input('\nSignal number: ');
a=input('Please choose any of these signal transformation\n1. Time scale\n2. Time shift\n3. Time inversion\n4. Amplitude scale\n5. Amplitude Shift\n6. Amplitude inversion\n');
switch (s)
case 7
A=input('Enter Amplitude:');
F= input('Enter frequency:');
t=0:0.01:1;
y = A*sin(2*pi*F*t);
figtitle = 'Sine Wave';
switch (a)
case 1 %time scale
z= input('Enter time scale value:');
tmod=z\t;
ymod=y;
case 2 %time shifting
z= input('Enter time shifting value:');
tmod=t-z;
ymod=y;
case 3 %time inversion
tmod=-t;
ymod=y;
case 4 %amplitude scale
z=input('Enter amplitude scale value:');
tmod=t;
ymod=z*y;
case 5 %amplitude shift
z=input('Enter amplitude shift value:');
tmod=t;
ymod=y-z;
case 6 %amplitude inversion
tmod=t;
ymod=-y;
end
plot(t,y,'b')
hold on
plot(tmod,ymod,'k')
hold off
title(figtitle)
xlabel('Time')
ylabel('Amplitude')
grid on
% adjust limits to create padding
xlim(xlim + [-1 1]*0.2)
ylim(ylim + [-1 1]*1.5)
%Fourier Transform
%Laplace Transform
case 8
A=input('Enter Amplitude:');
f= input('Enter frequency:');
t =0:0.01:1;
sqwv = A*sign(sin(2*pi*t*f));
figtitle = 'Square Wave';
switch (a)
case 1 %time scale
z=input('Enter time scale value:');
tmod= z\t;
ymod=sqwv;
case 2 %time shifting
z=input('Enter time shifting value:');
tmod= t-z;
ymod=sqwv;
case 3 %time inversion
tmod= -t;
ymod=sqwv;
case 4 %amplitude scale
z=input('Enter scale value:');
tmod= t;
ymod=z*sqwv;
case 5 %amplitude shift
z=input('Enter amplitude shift value:');
tmod= t;
ymod=sqwv+z;
case 6 %amplitude inversion
tmod= t;
ymod=-sqwv;
end
plot(t,sqwv,'b')
hold on
plot(tmod,ymod,'k')
hold off
title(figtitle)
xlabel('Time')
ylabel('Amplitude')
grid on
% adjust limits to create padding
xlim(xlim + [-1 1]*0.3)
ylim(ylim + [-1 1]*1.5)
%Fourier Transform
%Laplace Transform
end
採用された回答
Alagu Sankar Esakkiappan
2022 年 1 月 25 日
Hi Mya,
You may make use of fft and laplace to compute Fourier and Laplace transforms for a Signal in MATLAB. You may refer to the following code snippet ( in reference to your above code ) as example:
Fs = 1000; % samples per second
dt = 1/Fs; % seconds per sample
StopTime = 0.25; % seconds
t = (0:dt:StopTime-dt)';
A = 230; % Amplitude for Signal
F = 50; % Frequency for Signal
y = A*sin(2*pi*F*t);
% Original Sine Wave
subplot(2,1,1);
plot(t,y);
yFourier = fft(y);
f = (0:length(yFourier)-1)*F/length(yFourier);
% Frequency Response for Sine Wave
subplot(2,1,2);
plot(f,abs(yFourier));
syms t
y = A*sin(2*pi*F*t);
g = laplace(y) % Laplace Transform Equation for Sine Wave
0 件のコメント
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!