捋一捋DSP里的重叠保留法

相比于十分“直接”的重叠相加法,重叠保留法显得有点绕。那些字母加来减去的,各段和总输出的表达式让人眼花缭乱。花了些力气捋了捋清楚,记录于斯。

看字母太抽象太烦可以滑到后面例子对照理解。

设h(n)序列长M;x(n)总长L,分成长为N1的若干段,每段再把前一段末尾的M-1个点复制到本段开头(首段开头补零),变成长N的片段,然后依次和h(n)卷积。(故,N=M+N1-1)

每段卷完得有N+M-1那么多点,但空只留了N-M+1那么多,咋办?多出来前后各(M-1)个点没地待。巧了,这些个点正好没用,直接扔了。

为啥没用?首先,每段前端的M-1个点:它们实际上是h(n)翻过去之后(可能平移几下也可能都没动地——M=2的时候M-1=1就是只有没动地的情况)和本段那些多余的x(n)的点的积的和(最多是M-1个数的和,就是这M-1个没用的x(n)的点都被h(n)的点给乘了),一个有用的x(n)都没掺和这事总结一下,就是计算结果前端的M-1点对应了本来就是“复制”上一段结尾的那M-1个点,本来就不属于自己的“赝品”当然要扔。

(先看正文,再看括号补充的,不然有点乱)

不过如果是有些有用,有些没用的x(n)都参与了活动,活动成果要不要留呢?

答案是肯定的。这些就是和上一段的衔接点,因为这段开头所谓没用的点实际上是上一段的结尾,也是总的x(n)里原本就有的,而卷积也本来就是要前后的点都掺和,都是一家人分不开的(从“卷”这个字就能看出来,剪不断、理还乱啊)。上一段h(n)只能挪到最后一位与该段x(n)最后一位对齐这里,不能再往后挪了(这就是后面的M-1个点的去向——根本没计算出来)。所以这一段必须留,不然就缺了。

还是举套具体的数为例吧。

设x={1,2,3,...,9},h={3,2},要求最后的结果是每段x_{k}(n)长N=4(分完之后加上段首的M-1个上段“结余”一共).

那么,L=9,M=2,M-1=1,N=4

x_{1}={0,1,2,3};x_{2}={3,4,5,6};x_{3}={6,7,8,9};x_{4}={9,0,0,0}

明明到x_{3}这都把数取完了,为什么 末了又杀出个x_{4}

是因为按照原来分段算完并去完该去的,剩下的个数是和x(n)原来的点数相等,但卷积的结果应该是两个被卷积序列长度之和再减1啊,所以要补上后面缺的M-1=1个数,补上之后不足一个分段(N=4),所以又叫来仨零一起打麻将。

可以得到,y1={0,3,8,13},y2={9,18,23,28},y3={18,33,38,43},y4={27,18,0,0}

这里边,各段其实都没有按照线性卷积算完N+M-1个点,而是算到第N个点就不算了。这还没完,接下来还要把上面已经算出来的点,每段去掉开头的M-1=1个,其余保留并按序抄下就是最终结果:y={3,8,13,18,23,28,33,38,43,18}.什么?y的最后俩零为啥也不要了?那就回头看看x4的那三个0是怎么添上的,就会发现其实后面的整个x4就是为了把h(n)完整地从x(n)的末尾移出来,事实上只有9是被需要的,后面仨零都只是凑数的(真惨),用他们计算出来的结果也是白忙活一场,本来现实中就不存在,所以一旦y的末尾开始出现0,就说明后面都是虚无了。之前的段都是两个序列末尾重合,h(n)就不再继续向前挪了,但这次不行了,这是最后收尾阶段,没有后面的序列来找补了,必须在这里做个了断。

补充一下的话,原x(n)序列末尾是没有0的,如果原本就是0,那么y的结尾也会有0存在,所以我们来理论上算一下该留几个去几个:

需要补的0总共是N-(M-1)=N-M+1=N1个,这个例子里就是3个,最后补的这段卷积完只要留M-1=1个,除此之外,后面的以及最开始的M-1=1个全是不要的。再钻一下牛角尖的话,到底一共(包括开端和结尾)去几个呢?答案是N+M-1-(M-1)=N=4个,或者按照前面只算N个卷积的惯例,则是去掉N-(M-1)=3个。那么单算结尾去掉的数量,就是这个数字减去开头的M-1咯。

结束~

总结一下,一共是,重叠式分段、逐段卷积、掐头去尾、补零算末尾、存数依次排这几个步骤。我讲清楚了吗~

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: 在CCS 6.0中,读取DSP芯片中的程序有两种常见的方: 方一:通过CCS 6.0 IDE直接读取 1. 打开CCS 6.0开发环境,点击“File”菜单,选择“New”来创建一个新的项目。 2. 在新项目向导中选择“Target Configuration”并选择你所使用的DSP型号。点击“Finish”来创建项目。 3. 在“Project Explorer”窗口中展开项目文件夹,找到你想要读取的程序文件。 4. 双击该文件,CCS 6.0会在编辑器中打开该文件并显示其内容。你可以浏览或修改程序。 方二:通过DSP/BIOS工具来读取 1. 打开CCS 6.0开发环境,点击“File”菜单,选择“New”来创建一个新的项目。 2. 在新项目向导中选择“Target Configuration”并选择你所使用的DSP型号。点击“Finish”来创建项目。 3. 在“Project Explorer”窗口中展开项目文件夹,找到你想要读取的程序文件。 4. 右键点击该文件,选择“Properties”来打开文件属性对话框。 5. 在属性对话框中,选择“Build”选项卡,然后选中“Read-only”复选框。 6. 确定更改后,DSP/BIOS工具将读取该程序文件,并在查看器中显示其内容。 无论采用哪种方,确保在读取程序文件之前,你已经正确连接了DSP开发板并成功建立了与芯片的通信。请注意,读取程序文件只能对开发板中的存储器进行读取操作,并不能对其进行写入,如果需要将程序下载到芯片中,还需使用相应的烧录工具。 ### 回答2: CCS 6.0 是一种集成开发环境(IDE)软件,用于开发和调试嵌入式系统的程序。要将程序读取到DSP(数字信号处理器)中,可以按照以下步骤进行: 1. 打开CCS 6.0软件。在项目资源视图中,选择“New Project”(新建项目)选项。 2. 在新建项目向导中,选择“Target”(目标),然后选择适合您的DSP型号。 3. 在“Connection”(连接)选项中,选择与您的DSP设备相对应的调试器或仿真器。这是将程序下载到DSP设备上的关键步骤。 4. 完成项目设置后,选择“Finish”(完成)以创建新项目。 5. 在项目资源视图中,选择“New”(新建)并选择“Source File”(源文件)。 6. 在弹出的对话框中,输入源文件的名称和 C 语言文件类型。然后选择“Finish”(完成)以创建源文件。 7. 在源文件中,编写您的DSP程序代码。您可以使用C语言或特定的DSP编程语言来编写程序。 8. 完成程序编写后,选择“Build”(构建)以编译程序。任何语或编译错误都将显示在输出视图中。 9. 完成编译后,选择“Debug”(调试)以将程序下载到DSP设备中。CCS 6.0将自动连接到DSP设备,并将程序下载到设备的内存中。 10. 检查DSP设备是否成功加载了程序。您可以在CCS 6.0中的Debug视图中查看DSP设备的状态。 通过上述步骤,您可以使用CCS 6.0将程序读取并下载到DSP设备中进行运行和调试。请注意选择正确的DSP型号和调试器,以确保与您的设备兼容。 ### 回答3: CCS 6.0是一款功能强大的集成开发环境(IDE),用于开发和调试DSP(数字信号处理器)的程序。要读取DSP内部的程序,可以按照以下步骤进行操作: 1. 打开CCS 6.0软件并创建一个新的工程。 2. 在工程中选择正确的DSP目标设备,并选择合适的编译器。 3. 导入您要读取的DSP程序源代码文件。 4. 在CCS 6.0的工程中添加正确的链接器脚本,以定义程序代码在DSP内存中的存储位置和分布。 5. 编译您的工程以生成目标文件。 6. 使用CCS 6.0的调试器功能连接到您的DSP设备。 7. 在CCS 6.0中选择“下载”选项,将编译生成的目标文件下载到DSP内存中。 8. 启动调试会话,在CCS 6.0中设置断点或跟踪点,以便您可以观察程序的执行行为。 9. 运行程序,并使用CCS 6.0的调试功能来查看DSP内存中程序的值和状态。 10. 使用CCS 6.0提供的调试工具和功能,对程序进行单步调试、观察变量、查看寄存器状态等等。 通过以上步骤,您可以读取和调试DSP内部的程序。CCS 6.0提供了丰富的开发和调试工具,帮助您快速开发和优化DSP程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_41565277

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值