creating a figure that is a segment of another

2 次查看(过去 30 天)
i have a script that gives my figure(1) that graphs a cos wave over 5 sec then i need to section out the first second and have it display in figure(2). when i run my script i get the first figure and the second only displays the x,y cooridinates.
i think i have a problem in the way i sectioned the original vector.
my script looks like this:
clear;
clc;
close all;
% create vector of time values
t = 0.0 : 0.01 : 5.0;
% evaluate function at time points
f = 53*cos(104*pi*t).*exp(-1.35*t);
% plot t vs f(t)
figure(1)
plot(t,f);
xlabel('t(sec)');
ylabel('f(t)');
%reindex t to exclude the last four seconds
t = 0.0 : 0.01 : 5;
%plot t vs f(t)
figure(2)
plot(t,f(t));
xlabel('t(sec)');
ylabel('f(t)');

采纳的回答

Sven
Sven 2012-8-29
编辑:Sven 2012-8-30
I see a few problems:
Your f variable is still based on the original vector of t. You need to run:
f = 53*cos(104*pi*t).*exp(-1.35*t);
again, after you set your new t
Also, you have set t to be the same vector (ie, t = 0.0 : 0.01 : 5; ). I don't think you wanted this.
Finally, in the second figure you are calling:
plot(t,f(t));
but t is still a vector of times, not a vector of indices.
Perhaps you meant the following:
% First figure
t = 0.0 : 0.01 : 5.0;
f = 53*cos(104*pi*t).*exp(-1.35*t);
figure
plot(t,f);
xlabel('t(sec)');
ylabel('f(t)');
% Second figure, using only first 1/5th of t, f
idxs = 1:round(length(t)/5);
figure
plot(t(idxs),f(idxs));
xlabel('t(sec)');
ylabel('f(t)');
By the way, have you tried instead just:
set(gca,'xlim',[0 1])
You can run this after the first plot, and it will "zoom in" on only the first portion from 0 to 1 along the x axis. The rest will be excluded from view.

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 2-D and 3-D Plots 的更多信息

标签

产品

Community Treasure Hunt

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

Start Hunting!

Translated by