草庐IT

MATLAB实例:阶跃函数的两种表达方式

Bitter tea seeds 2023-07-13 原文

文章目录


前言

阶跃函数在MATLAB中有两种调用函数:
heaviside()函数、stepfun()函数
下面我们就来看看它俩的区别和用法。


一、heaviside()函数

1.heaviside()函数的介绍

如下图MATLAB字典上的介绍,可以看见heaviside函数的调用很简单:H = heaviside(x);并且heaviside是一个不连续的函数。它返回 0 表示 x < 0,返回 1/2 表示 x = 0,返回 1 表示 x > 0。

简单画heaviside

syms x
fplot(heaviside(x), [-2, 2])

2.heaviside()实例

代码如下所示

>> T=0.01;%步长
>> t1=0;t2=3;t3=-2;t4=2;%坐标参数
>> t5=t1:T:t2;%t5取值范围;
>> t6=t3:T:t4;%t6取值范围;
>> f1=2*exp(-2*t5);%指数函数
>> f2=3*(heaviside(t6-1)-heaviside(t6-2));%门函数
>> [y]=conv(f1,f2);%将卷积设为矩阵
>> y=y*T;t=(t1+t3):T:(t2+t4);%卷积的取值范围
>> subplot(3,1,1);plot(t5,f1,'r');axis([(t1+t3),(t2+t4),min(f1),max(f1)+0.5]);%设置坐标轴
>>  ylabel('f1(t)指数曲线');line([0,0],[0,2.5]);title('信号卷积');
>>  subplot(3,1,2);plot(t6,f2);axis([(t1+t3),(t2+t4),min(f2),max(f2)+0.5]);
>> ylabel('f2(t)门函数');
>> subplot(3,1,3);plot(t,y,'m');axis([(t1+t3),(t2+t4),min(y),max(y)+0.5]);ylabel('y(t)卷积合成曲线');

二、stepfun()函数

1.stepfun()函数的介绍

stepfun函数的调用stepfun(x,y)其中x代表横坐标和y代表纵坐标. 其中x必须是一个升序的向量, y的长度比x大1。
简单举例

代码如下(示例):

>> b=-5:0.01:20;%定义时间样本
>> b0=0;%信号发生突变的时刻
>> ut=stepfun(b,b0);%产生单位的阶跃信号
>> plot(b,ut),axis([-5,20,-2.5,10])%坐标轴

2.stepfun()实例

代码如下(示例):

>> T=0.01;%步长
>> t1=0;t2=3;t3=-2;t4=2;%坐标参数
>> t5=t1:T:t2;%t5取值范围;
>> t6=t3:T:t4;%t6取值范围;
>> f1=2*exp(-2*t5);%指数函数
>> f2=3*(stepfun(t6,-1)-stepfun(t6,2));%门函数
>> [y]=conv(f1,f2);%将卷积设为矩阵
>> y=y*T;t=(t1+t3):T:(t2+t4);%卷积的取值范围
>> subplot(3,1,1);plot(t5,f1,'r');axis([(t1+t3),(t2+t4),min(f1),max(f1)+0.5]);%设置坐标轴
>> ylabel('f1(t)指数曲线');line([0,0],[0,2.5]);title('信号卷积');
>> subplot(3,1,2);plot(t6,f2);axis([(t1+t3),(t2+t4),min(f2),max(f2)+0.5]);
>> ylabel('f2(t)门函数');
>> subplot(3,1,3);plot(t,y,'m');axis([(t1+t3),(t2+t4),min(y),max(y)+0.5]);ylabel('y(t)卷积合成曲线');


总结

以上就是今天要讲的内容,本文仅仅简单介绍了heaviside()函数、stepfun()函数的使用,而MATLAB提供了大量能使我们快速便捷地处理数据的函数和方法,都等待着我们的探索和使用。

小刘的悲催日常,终于要转运了

小刘一大早就到老板的办公室,委婉的说:“老板你看我这两天挺辛苦的,一直在加班,你看这个加班费……”
“什么加班费?我不知道你说的什么?公司里培养着你,你要什么加班费?”
老板一脸不屑的瞅着小刘。
小刘涨红了脸,半天说不出一个字来;老板看着小刘,吼道:“还不快去工作,延误了项目提交,我扣你工资!”
小刘走回了工位上,这时候手机突然蹦传来一条消息:十万月薪,心动联系……

有关MATLAB实例:阶跃函数的两种表达方式的更多相关文章

  1. ruby - 如何以所有可能的方式将字符串拆分为长度最多为 3 的连续子字符串? - 2

    我试图获取一个长度在1到10之间的字符串,并输出将字符串分解为大小为1、2或3的连续子字符串的所有可能方式。例如:输入:123456将整数分割成单个字符,然后继续查找组合。该代码将返回以下所有数组。[1,2,3,4,5,6][12,3,4,5,6][1,23,4,5,6][1,2,34,5,6][1,2,3,45,6][1,2,3,4,56][12,34,5,6][12,3,45,6][12,3,4,56][1,23,45,6][1,2,34,56][1,23,4,56][12,34,56][123,4,5,6][1,234,5,6][1,2,345,6][1,2,3,456][123

  2. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  3. ruby-on-rails - 如何使用 instance_variable_set 正确设置实例变量? - 2

    我正在查看instance_variable_set的文档并看到给出的示例代码是这样做的:obj.instance_variable_set(:@instnc_var,"valuefortheinstancevariable")然后允许您在类的任何实例方法中以@instnc_var的形式访问该变量。我想知道为什么在@instnc_var之前需要一个冒号:。冒号有什么作用? 最佳答案 我的第一直觉是告诉你不要使用instance_variable_set除非你真的知道你用它做什么。它本质上是一种元编程工具或绕过实例变量可见性的黑客攻击

  4. ruby 正则表达式 - 如何替换字符串中匹配项的第 n 个实例 - 2

    在我的应用程序中,我需要能够找到所有数字子字符串,然后扫描每个子字符串,找到第一个匹配范围(例如5到15之间)的子字符串,并将该实例替换为另一个字符串“X”。我的测试字符串s="1foo100bar10gee1"我的初始模式是1个或多个数字的任何字符串,例如,re=Regexp.new(/\d+/)matches=s.scan(re)给出["1","100","10","1"]如果我想用“X”替换第N个匹配项,并且只替换第N个匹配项,我该怎么做?例如,如果我想替换第三个匹配项“10”(匹配项[2]),我不能只说s[matches[2]]="X"因为它做了两次替换“1fooX0barXg

  5. ruby - 在没有 sass 引擎的情况下使用 sass 颜色函数 - 2

    我想在一个没有Sass引擎的类中使用Sass颜色函数。我已经在项目中使用了sassgem,所以我认为搭载会像以下一样简单:classRectangleincludeSass::Script::FunctionsdefcolorSass::Script::Color.new([0x82,0x39,0x06])enddefrender#hamlengineexecutedwithcontextofself#sothatwithintemlateicouldcall#%stop{offset:'0%',stop:{color:lighten(color)}}endend更新:参见上面的#re

  6. ruby-on-rails - 在 ruby​​ 中使用 gsub 函数替换单词 - 2

    我正在尝试用ruby​​中的gsub函数替换字符串中的某些单词,但有时效果很好,在某些情况下会出现此错误?这种格式有什么问题吗NoMethodError(undefinedmethod`gsub!'fornil:NilClass):模型.rbclassTest"replacethisID1",WAY=>"replacethisID2andID3",DELTA=>"replacethisID4"}end另一个模型.rbclassCheck 最佳答案 啊,我找到了!gsub!是一个非常奇怪的方法。首先,它替换了字符串,所以它实际上修改了

  7. ruby - 在 Ruby 中有条件地定义函数 - 2

    我有一些代码在几个不同的位置之一运行:作为具有调试输出的命令行工具,作为不接受任何输出的更大程序的一部分,以及在Rails环境中。有时我需要根据代码的位置对代码进行细微的更改,我意识到以下样式似乎可行:print"Testingnestedfunctionsdefined\n"CLI=trueifCLIdeftest_printprint"CommandLineVersion\n"endelsedeftest_printprint"ReleaseVersion\n"endendtest_print()这导致:TestingnestedfunctionsdefinedCommandLin

  8. ruby-on-rails - Rails - 从另一个模型中创建一个模型的实例 - 2

    我有一个正在构建的应用程序,我需要一个模型来创建另一个模型的实例。我希望每辆车都有4个轮胎。汽车模型classCar轮胎模型classTire但是,在make_tires内部有一个错误,如果我为Tire尝试它,则没有用于创建或新建的activerecord方法。当我检查轮胎时,它没有这些方法。我该如何补救?错误是这样的:未定义的方法'create'forActiveRecord::AttributeMethods::Serialization::Tire::Module我测试了两个环境:测试和开发,它们都因相同的错误而失败。 最佳答案

  9. ruby-on-rails - RSpec:避免使用允许接收的任何实例 - 2

    我正在处理旧代码的一部分。beforedoallow_any_instance_of(SportRateManager).toreceive(:create).and_return(true)endRubocop错误如下:Avoidstubbingusing'allow_any_instance_of'我读到了RuboCop::RSpec:AnyInstance我试着像下面那样改变它。由此beforedoallow_any_instance_of(SportRateManager).toreceive(:create).and_return(true)end对此:let(:sport_

  10. ruby-on-rails - 正确的 Rails 2.1 做事方式 - 2

    question的一些答案关于redirect_to让我想到了其他一些问题。基本上,我正在使用Rails2.1编写博客应用程序。我一直在尝试自己完成大部分工作(因为我对Rails有所了解),但在需要时会引用Internet上的教程和引用资料。我设法让一个简单的博客正常运行,然后我尝试添加评论。靠我自己,我设法让它进入了可以从script/console添加评论的阶段,但我无法让表单正常工作。我遵循的其中一个教程建议在帖子Controller中创建一个“评论”操作,以添加评论。我的问题是:这是“标准”方式吗?我的另一个问题的答案之一似乎暗示应该有一个CommentsController参

随机推荐