草庐IT

无码间串扰——部分响应模拟实验

My§Re\ 2023-03-28 原文

目的:

  1、通过实例对部分响应系统的基本概念加以说明

  2.了解部分响应波形的特点

  3.无码间无码间串扰过程

代码:

%x=-5*pi:0.01*pi:5*pi;
x=-5:0.01:5;  %X的取值范围
y=sinc(x);  %定义部分响应特殊函数Sa
subplot(2,2,1);plot(x,y),title(' Sa函数'); %部分响应函数图像
grid on;
Fs=1;  %平移一个零点的距离,间隔时间
y1=sinc(x-Fs);%间隔时间进行屏平移右移的图像
y2=sinc(x-2*Fs);%两个间隔时间进行屏平移右移的图像
y3=sinc(x-3*Fs);%三个间隔时间进行屏平移右移的图像
y4=sinc(x+1*Fs);%间隔时间进行屏平移左移的图像
y5=sinc(x+2*Fs);%两个间隔时间进行屏平移左移的图像
y6=sinc(x+3*Fs);%三个间隔时间进行屏平移左移的图像
subplot(2,2,2);plot(x,y,'r'),title(' 部分响应函数'),grid on; %部分响应函数图像
hold on;plot(x,y1,'b'); %部分响应函数图像
hold on;plot(x,y2,'b'); %部分响应函数图像
hold on;plot(x,y3,'b'); %部分响应函数图像
hold on;plot(x,y4,'g'); %部分响应函数图像
hold on;plot(x,y5,'g'); %部分响应函数图像
hold on;plot(x,y6,'g'); %部分响应函数图像
g1=y1+y;
g2=y1+y2;
g3=y2+y3;
g4=y+y4;
g5=y4+y5;
g6=y5+y6;
subplot(2,2,3);plot(x,g1,'y'),title(' Sa函数平移'),grid on; %部分响应函数图像
hold on;plot(x,g2,'y'); %部分响应函数图像
hold on;plot(x,g3,'y');plot(x,g4,'y');plot(x,g5,'y');plot(x,g6,'y');
hold on;plot(x,y1,'b'); %部分响应函数图像
hold on;plot(x,y2,'b'); %部分响应函数图像
hold on;plot(x,y3,'b'); %部分响应函数图像
hold on;plot(x,y4,'g'); %部分响应函数图像
hold on;plot(x,y5,'g'); %部分响应函数图像
hold on;plot(x,y6,'g'); plot(x,y,'r');%部分响应函数图像
subplot(2,2,4);ezplot('sinc(x)+sinc(x+1)',[-5,5, -0.5,1.2]),grid on;s

 实验图形:

图表 1实例函数

 

图表 2平移之后的函数

 

图表 3部分响应函数

 

图表 4抽样原理分析图

      由图片可以知,当传送码元间隔为Ts的时候,在抽样时刻t =Ts/2处,g(t) = 1外,其余的抽样时刻上, g(t)具有等间隔Ts的零点。

 

图表 5 g(t)函数图

 

图表 6总图预览

结论

     1.通过实例(sin x / x)对部分响应系统的基本概念加以说明,两个间隔为一个码元长度Ts的  sin x / x  的合成波形来代替sin x / x在抽样时刻t =Ts/2处g(t) = 1外,其余的抽样时刻上, g(t)具有等间隔Ts的零点。

     2.观察g(t)波形可知:

        1.g(t)的拖尾比理想低通形成的h(t)衰减大快

        2.若用g(t)作为传送波形,且传送码元间隔为Ts,则在抽样时刻:发送码元与其前后码元相互干扰,而与其它码元不发生干扰。

        3.这种“干扰”是确定的,在收端可以消除掉,故仍可按1/ Ts传输速率传送码元。

          3. 通过采用“预编码-相关编码-模2判决”处理过程,对前后波形所造成的串扰,进行消除。

 

有关无码间串扰——部分响应模拟实验的更多相关文章

  1. ruby - 如何模拟 Net::HTTP::Post? - 2

    是的,我知道最好使用webmock,但我想知道如何在RSpec中模拟此方法:defmethod_to_testurl=URI.parseurireq=Net::HTTP::Post.newurl.pathres=Net::HTTP.start(url.host,url.port)do|http|http.requestreq,foo:1endresend这是RSpec:let(:uri){'http://example.com'}specify'HTTPcall'dohttp=mock:httpNet::HTTP.stub!(:start).and_yieldhttphttp.shou

  2. ruby-on-rails - 每次我尝试部署时,我都会得到 - (gcloud.preview.app.deploy) 错误响应 : [4] DEADLINE_EXCEEDED - 2

    我是Google云的新手,我正在尝试对其进行首次部署。我的第一个部署是RubyonRails项目。我基本上是在关注thisguideinthegoogleclouddocumentation.唯一的区别是我使用的是我自己的项目,而不是他们提供的“helloworld”项目。这是我的app.yaml文件runtime:customvm:trueentrypoint:bundleexecrackup-p8080-Eproductionconfig.ruresources:cpu:0.5memory_gb:1.3disk_size_gb:10当我转到我的项目目录并运行gcloudprevie

  3. ruby-on-rails - 在 Ruby on Rails 中发送响应之前如何等待多个异步操作完成? - 2

    在我做的一些网络开发中,我有多个操作开始,比如对外部API的GET请求,我希望它们同时开始,因为一个不依赖另一个的结果。我希望事情能够在后台运行。我找到了concurrent-rubylibrary这似乎运作良好。通过将其混合到您创建的类中,该类的方法具有在后台线程上运行的异步版本。这导致我编写如下代码,其中FirstAsyncWorker和SecondAsyncWorker是我编写的类,我在其中混合了Concurrent::Async模块,并编写了一个名为“work”的方法来发送HTTP请求:defindexop1_result=FirstAsyncWorker.new.async.

  4. ruby-on-rails - 在这种情况下我如何模拟一个对象?没有明显的方法可以用模拟替换对象 - 2

    假设我在Store的模型中有这个非常简单的方法:defgeocode_addressloc=Store.geocode(address)self.lat=loc.latself.lng=loc.lngend如果我想编写一些不受地理编码服务影响的测试脚本,这些脚本可能已关闭、有限制或取决于我的互联网连接,我该如何模拟地理编码服务?如果我可以将地理编码对象传递到该方法中,那将很容易,但我不知道在这种情况下该怎么做。谢谢!特里斯坦 最佳答案 使用内置模拟和stub的rspecs,你可以做这样的事情:setupdo@subject=MyCl

  5. ruby - "public/protected/private"方法是如何实现的,我该如何模拟它? - 2

    在ruby中,你可以这样做:classThingpublicdeff1puts"f1"endprivatedeff2puts"f2"endpublicdeff3puts"f3"endprivatedeff4puts"f4"endend现在f1和f3是公共(public)的,f2和f4是私有(private)的。内部发生了什么,允许您调用一个类方法,然后更改方法定义?我怎样才能实现相同的功能(表面上是创建我自己的java之类的注释)例如...classThingfundeff1puts"hey"endnotfundeff2puts"hey"endendfun和notfun将更改以下函数定

  6. ruby - 在 RSpec 中 stub /模拟全局常量 - 2

    我有一个gem,它有一个根据Rails.env的不同行为的方法:defself.envifdefined?(Rails)Rails.envelsif...现在我想编写一个规范来测试这个代码路径。目前我是这样做的:Kernel.const_set(:Rails,nil)Rails.should_receive(:env).and_return('production')...没关系,只是感觉很丑。另一种方法是在spec_helper中声明:moduleRails;end而且效果也很好。但也许有更好的方法?理想情况下,这应该有效:rails=double('Rails')rails.sho

  7. ruby-on-rails - rspec 模拟对象属性赋值 - 2

    我有一个rspec模拟对象,一个值赋给了属性。我正在努力在我的rspec测试中满足这种期望。只是想知道语法是什么?代码:defcreate@new_campaign=AdCampaign.new(params[:new_campaign])@new_campaign.creationDate="#{Time.now.year}/#{Time.now.mon}/#{Time.now.day}"if@new_campaign.saveflash[:status]="Success"elseflash[:status]="Failed"endend测试it"shouldabletocreat

  8. ruby - 如何使用 rspec stub /模拟对命令行的调用? - 2

    我正在尝试测试命令行工具的输出。如何使用rspec来“伪造”命令行调用?执行以下操作不起作用:it"shouldcallthecommandlineandreturn'text'"do@p=Pig.new@p.should_receive(:run).with('my_command_line_tool_call').and_return('resulttext')end如何创建stub? 最佳答案 使用newmessageexpectationsyntax:规范/虚拟规范.rbrequire"dummy"describeDummy

  9. ruby - 如何使用部分字符串搜索数组并返回索引? - 2

    我想使用部分字符串搜索数组,然后获取找到该字符串的索引。例如:a=["Thisisline1","Wehaveline2here","andfinallyline3","potato"]a.index("potato")#thisreturns3a.index("Wehave")#thisreturnsnil使用a.grep将返回完整的字符串,使用a.any?将返回正确的true/false语句,但都不会返回匹配的索引找到了,或者至少我不知道该怎么做。我正在编写一段代码,该代码读取文件、查找特定header,然后返回该header的索引,以便它可以将其用作future搜索的偏移量。如果

  10. ruby-on-rails - 如何将数据传递给部分? - 2

    K伙计们,所以我创建了这个赞成/反对的投票脚本(基本上就像stackoverflow上的那个),我试图向其中添加一些Ajax,这样页面就不会在您每次投票时都重新加载。我有两个Controller,一个叫grinder,一个叫votes。(磨床基本都是帖子)所以这是所有研磨机的索引(看起来像这样)这是该页面的代码。Listinggrinders"grinders/grinders")%>这就是我在views/grinders/_grinders.erb中的内容true)do|u|%>grinder.id%>"up"%>'create')%>true)do|d|%>grinder.id%>

随机推荐