MATLAB-函数定义

时间:2014-10-05 05:43:45

标签: matlab signal-processing

如何在MATLAB中绘制在不同时间间隔内具有不同定义的函数?

例如,函数等于t加1,t在区间减1到0,等于t,区间0到1.我们需要在定义函数后进行移位和缩放。所以请在回答时考虑一下。

我尝试将 t 定义为数组t = [-2:0.01:2]f = zeros( length( t ) ),然后在f中找到与其值相对应的位置t并为其指定值。 我必须乘以两个信号(它们是原始信号的移位和采样版本)。我写的代码没有给出所需的输出。

clc
clear
t=(-10:0.01:10);
y=zeros(size(t));
y(t>=-1 & t<=0)=-1*t(t>=-1 & t<=0)-1;
y(t>=0&t<=1)=t(t>=0&t<=1);
y(t>=1&t<=2)=1;
y(t>=2&t<=3)=-1*t(t>=2&t<=3)+3;
subplot(5,1,1);
plot(t,y);
axis([-5 5 -2 2]);
n1=input('enter the shifting parameter-');
n2=input('enter the scaling parameter-');
t=(t+n1)/n2;
subplot(5,1,2);
plot(t,y);
axis([-5 5 -2 2]);
n3=min(t);
n4=max(t);
p=-10:0.01:10;
y1=zeros(size(p));
y1(p>=-2 & p<=-1)=1;
y1(p>=-1&p<=0)=-1;
y1(p>=0&p<=1)=p(p>=0&p<=1)-1;
y1(p>=1&p<=2)=1;
subplot(5,1,3);
plot(p,y1);
axis([-5 5 -2 2]);
m1=input('enter the shifting parameter-');
m2=input('enter the scaling parameter-');
p=(p+m1)/m2;
subplot(5,1,4);
plot(p,y1);
axis([-5 5 -2 2]);
m3=min(p);
m4=max(p);
a1=max(n3,m3);
a2=min(n4,m4);
r=a1:0.01:a2;
y2=zeros(size(r));
y2=y(r<=a2&r>=a1).*y1(r>=a1&r<=a2);
subplot(5,1,5);
plot(r,y2);
axis([-5 5 -2 2]);

1 个答案:

答案 0 :(得分:0)

不确定问题是什么,但是..

t = -1 : 0.01 : 1;
y = zeros(size(t));
y(t < 0)  = t(t < 0) + 1;
y(t >= 0) = t(t >= 0);
plot(t, y);

如果你不想在断点处有一条垂直线......

hold on;
plot(t(t < 0), y(t < 0));
plot(t(t >= 0), y(t >= 0));
hold off;
  像这样y = -t-1; -1&lt; t&lt; 0 y = t; 0&lt; t&lt; 1 y = 2; 1&lt; t&lt; 2我

只需添加新的间隔

t = -1 : 0.001 : 2;
y = zeros(size(t));
y(t < 0)  = t(t < 0) + 1;
y(t >= 0 & t < 1) = t(t >=0 & t < 1);
y(t >= 1 & t <=2) = 2; 
plot(t, y);