【问题标题】:MATLAB- Function definitionMATLAB-函数定义
【发布时间】:2015-03-03 07:29:38
【问题描述】:

如何在 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]);

【问题讨论】:

  • 请将您尝试过的代码添加到您的帖子中,它会显示您已经尝试过,它可能会帮助人们更好地理解您的请求并可能对您有所帮助。
  • 我也更新了问题和代码。
  • 通过查找输入向量的位置来定义函数并分配结果的部分不是最有效的,但对我来说看起来没问题。它对我来说运行良好(没有错误)。这段代码产生了 5 个图,你在哪个阶段对结果不满意?
  • 最后阶段。我猜这两个函数相乘的最终结果不是想要的。它不正确。核实。运行时错误。

标签: matlab signal-processing


【解决方案1】:

不知道是什么问题,但是..

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

只需添加一个新间隔

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);

【讨论】:

  • 我必须绘制两个给定的信号,我已经绘制并且工作正常,然后执行移位和缩放操作,然后最后将两个信号相乘以获得输出信号。所以基本上我在乘法部分有一个错误。
  • 水平或垂直移动和缩放??如果是水平的,那么很明显,您只能乘以相交区域。
  • 水平移动。是的,我知道,这就是我所做的乘以相交区域。但它在结果中显示错误。尝试运行一次代码,也许你会知道我面临的问题。
  • @ROGER 乘法的问题在于您的 t 值应该相同,但是当您进行缩放时 - t 值可以定义为不同的值。可能你只需要在乘法之前创建向量,只计算相同点的函数值。
  • 或者,使用线性样条和大量数据点,重新计算相同点的函数值。
猜你喜欢
  • 2017-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多