
How to plot a curved signal ?
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Biro Darius
am 15 Okt. 2018
Kommentiert: Image Analyst
am 25 Okt. 2018
Can anybody tell me how can I plot a signal like that one represented in the figure below ? I just need the part of the signal from 10 to 15. I have the following code until now :
time = 0:0.1:15;
xArray = zeros(1,numel(time)); %numel gives the number of the elements that an array has
for index = 1:numel(time)
if(time(index)>5 && time(index)<7)
xArray(index) = (time(index)-5)/2;
elseif(time(index))>= 7 && (time(index))<10
xArray(index) = 1;
elseif ((time(index) >= 10 && time(index)<15))
xArray(index) = (15 - time(index))/5;
end
end
figure (2)
plot(time,xArray);
axis([0 15 0 5]);

0 Kommentare
Akzeptierte Antwort
Image Analyst
am 15 Okt. 2018
Try this:
numPoints = 1000;
times = linspace(0, 15, numPoints);
xArray = zeros(1,numel(times)); % numel gives the number of the elements that an array has
for index = 1 : numel(times)
if times(index) > 5 && times(index) < 7
xArray(index) = (times(index)-5)/2;
elseif times(index) >= 7 && times(index) < 10
xArray(index) = 1;
elseif ((times(index) >= 10 && times(index)<15))
a = 0.7; % Smaller for flatter, larger for steeper
xArray(index) = exp(-a * (times(index) - 10));
end
end
plot(times, xArray, 'b-', 'LineWidth', 2);
xlim([0, 15]);
ylim([0, 2]);
ax = gca;
ax.YTick = [0 1];
ax.XTick = [5 7 10 15];
ax.FontSize = 15;
grid on;
xlabel('f[Hz]', 'FontSize', 15);
ylabel('x', 'FontSize', 15);
title('xArray vs. Time', 'FontSize', 15);

Weitere Antworten (2)
Akira Agata
am 15 Okt. 2018
How about the following?
figure
plot(time,xArray)
ax = gca;
ax.YTick = [0 1];
ax.XTick = [5 7 10 15];

0 Kommentare
Biro Darius
am 18 Okt. 2018
3 Kommentare
Image Analyst
am 25 Okt. 2018
Yes, he wants you to do it "manually" instead of having the ifft() function do it for you.
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!