creating a figure that is a segment of another
조회 수: 1 (최근 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)');
댓글 수: 0
채택된 답변
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 Center 및 File Exchange에서 Creating, Deleting, and Querying Graphics Objects에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!