ploting a specific function.

2 vues (au cours des 30 derniers jours)
ahmet cakar
ahmet cakar le 12 Déc 2016
Commenté : ahmet cakar le 14 Déc 2016
hi, anyone knows how can I plot this function in Matlab?
thanks...
  1 commentaire
Walter Roberson
Walter Roberson le 12 Déc 2016
Are the vertical parts intended to be sudden jumps ("the value reached 1 and jumped to 0") or are they intended to be lines?
Do you just need to plot the values, or do you need all of the intermediate values?

Connectez-vous pour commenter.

Réponse acceptée

Walter Roberson
Walter Roberson le 12 Déc 2016
v0 = 0; v2 = 0.2; v3 = 0.3; v7 = 0.7; v8 = 0.8; v1=1;
xr = [v0, v2*(1-eps), v2, v3*(1-eps), v3, v7*(1-eps), v7, v8*(1-eps), v8, v1];
yr = [0, 1, 0, 0, 1, -1, 0, 0, -1, 0];
x = linspace(v0, v1, 500);
y = interp1(xr, yr, x);
plot(x, y);
  1 commentaire
Walter Roberson
Walter Roberson le 12 Déc 2016
Note: the assigning to variables such as v2 is there so that you can be sure that you get bitwise identical meanings of literal constants. You could also write,
xr = [0, 0.2*(1-eps), 0.2, 0.3*(1-eps), 0.3, 0.7*(1-eps), 0.7, 0.8*(1-eps), 0.8, 1];
yr = [0, 1, 0, 0, 1, -1, 0, 0, -1, 0];
x = linspace(0, 1, 500);
y = interp1(xr, yr, x);
plot(x, y);
but then you have the worry about whether the 0.2*(1-eps) as a literal constant will definitely evaluate to a different value than 0.2 as a literal constant -- because if it happens to round to the same value due to some quirk of the parser, then interp1() will complain about the values not being monotonically increasing.

Connectez-vous pour commenter.

Plus de réponses (2)

Kenny Kim
Kenny Kim le 12 Déc 2016
t = linspace(0,1,10001);
x = nan(size(t));
for i =1:numel(t)
if t(i) <=0.2
x(i) = 5*t(i);
elseif t(i) >0.2 && t(i) <= 0.3
x(i) = 0;
elseif t(i) > 0.3 && t(i) <= 0.7
x(i) = 1 - 5*(t(i) - 0.3);
elseif t(i) > 0.7 && t(i) <= 0.8
x(i) = 0;
else
x(i) = -1 + 5*(t(i) - 0.8);
end
end
plot(t,x); xlabel('Time (s)'); ylabel('x(t)'); title('Giris Isareti');

ahmet cakar
ahmet cakar le 13 Déc 2016
First of all, thanks for the answers these really works for me.(Btw sorry for late return) So, I need to learn just one more thing. How can I do amplitude modulation to this function. so, I need to multiply x(t) by cos2*pi*fc*t (fc=100Hz , t=as I give in figure). Thanks again..
  4 commentaires
Walter Roberson
Walter Roberson le 13 Déc 2016
  • is the mtimes operator, which does algebraic matrix multiplication
.* is the times operator, which does element-by-element multiplication.
ahmet cakar
ahmet cakar le 14 Déc 2016
Hmm okey. Thanks again.

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!

Translated by