序列的基本运算

这篇博客介绍了MATLAB中序列的基本运算,包括序列相加和卷积,同时展示了如何使用MATLAB进行傅立叶分析。文章还提到了Markdown编辑器的新功能,如图片拖拽、代码高亮、KaTeX数学公式支持等,以及Markdown的各种语法和快捷键。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、信号运算:序列相加、相乘运算
给出两个序列x1(n) 和 x2(n)
x1(n)= [0,1,2,3,4,3,2,1,0];n1= [−2 : 6];
x2(n) = [2,2,0,0,0,−2,−2];n2 = [2 :8];
现在要完成它们的相加和相乘,由所学的知识可知道必须满足序列相加和相乘的条件,根据原理编写实验程序,观察程序运行结果。

序列相加


```c
function [x,n]=lsxj(x1,x2,n1,n2)
%实现x(n)=x1(n)+x2(n),x1,x2,n1,n2是参加运算的离散序列及对应的时间序列向量,x和
%n为返回的和序列及其对应时间序列向量
n=min(min(n1),min(n2)):max(max(n1),max(n2));%构造和序列长度
s1=zeros(1,length(n));s2=s1;%初始化新向量
s1(find((n>=min(n1))&(n<=max(n1))==1))=x1;%将x1中在和序列范围内但又无定义的点
                                          %赋值为零
s2(find((n>=min(n2))&(n<=max(n2))==1))=x2;%将x2中在和序列范围内但又无定义的点
                                          %赋值为零
x=s1+s2;%两长度相等序列求和
stem(n,x,'filled')
axis([(min(min(n1),min(n2))-1),(max(max(n1),max(n2))+1),(min(x)-0.5),(max(x)+0.5)])%坐标轴显示范围
x1=[0,1,2,3,4,3,2,1,0];n1=-2:6;
x2=[2,2,0,0,0,-2,-2];n2=2:8;
subplot 111;
[x,n]=lsxj(x1,x2,n1,n2);
title('x(n)=x1(n)+x2(n)')


## 序列乘法


function [x,n]=lsxc(x1,x2,n1,n2)
%实现x(n)=x1(n)+x2(n),x1,x2,n1,n2是参加运算的离散序列及对应的时间序列向量,x和
%n为返回的和序列及其对应时间序列向量
n=min(min(n1),min(n2)):max(max(n1),max(n2));%构造和序列长度
s1=zeros(1,length(n));s2=s1;%初始化新向量
s1(find((n>=min(n1))&(n<=max(n1))==1))=x1;%将x1中在和序列范围内但又无定义的点
                                          %赋值为零
s2(find((n>=min(n2))&(n<=max(n2))==1))=x2;%将x2中在和序列范围内但又无定义的点
                                          %赋值为零
x=s1.*s2;%两长度相等序列求和
stem(n,x,'filled')
axis([(min(min(n1),min(n2))-1),(max(max(n1),max(n2))+1),(min(x)-0.5),(max(x)+0.5)])%坐标轴显示范围
x1=[0,1,2,3,4,3,2,1,0];n1=-2:6;
x2=[2,2,0,0,0,-2,-2];n2=2:8;
subplot 111;
[x,n]=lsxc(x1,x2,n1,n2);
title('x(n)=x1(n).*x2(n)')

序列相乘

卷积运算

计算下列卷积,并图示各序列及其卷积结果
在这里插入图片描述`function [y,ny]=conv_m(x,nx,h,nh)
ny1=nx(1)+nh(1);ny2=nx(length(x))+nh(length(h));
ny=[ny1:ny2];;
y=conv(x,h)
end
function [x,n]=stepseq(n0,ns,nf)
n=[ns:nf];x=[(n-n0)>=0];
end
(1)n=-5:50;h=stepseq(0,-5,50)-stepseq(10,-5,50);
x=((0.9).^n).(stepseq(0,-5,50)-stepseq(20,-5,50));
subplot(3,1,1);stem(n,h);axis([-5,50,0,2]);ylabel(‘h(n)’);
subplot(3,1,2);stem(n,x);axis([-5,50,0,2]);ylabel(‘x(n)’);
[y,ny]=conv_m(x,n,h,n);subplot(3,1,3);stem(ny,y);
axis([-5,50,0,8]);xlabel(‘n’);ylabel(‘y(n)’);
(2)n=-5:50;h=stepseq(0,-5,50)-stepseq(10,-5,50);
x=((0.9).^(n-5)).
(stepseq(5,-5,50)-stepseq(25,-5,50));
subplot(3,1,1);stem(n,h);axis([-5,50,0,2]);ylabel(‘h(n)’);
subplot(3,1,2);stem(n,x);axis([-5,50,0,2]);ylabel(‘x(n)’);
[y,ny]=conv_m(x,n,h,n);subplot(3,1,3);stem(ny,y);axis([-5,50,0,8]);
Xlabel(‘n’);ylabel(‘y(n)’) ;
在这里插入图片描述在这里插入图片描述

  • List item

你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

新的改变

我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

  1. 全新的界面设计 ,将会带来全新的写作体验;
  2. 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
  3. 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
  4. 全新的 KaTeX数学公式 语法;
  5. 增加了支持甘特图的mermaid语法1 功能;
  6. 增加了 多屏幕编辑 Markdown文章功能;
  7. 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
  8. 增加了 检查列表 功能。

功能快捷键

撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G
查找:Ctrl/Command + F
替换:Ctrl/Command + G

合理的创建标题,有助于目录的生成

直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

如何改变文本的样式

强调文本 强调文本

加粗文本 加粗文本

标记文本

删除文本

引用文本

H2O is是液体。

210 运算结果是 1024.

插入链接与图片

链接: link.

图片: Alt

带尺寸的图片: Alt

居中的图片: Alt

居中并且带尺寸的图片: Alt

当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

如何插入一段漂亮的代码片

博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

// An highlighted block
var foo = 'bar';

生成一个适合你的列表

  • 项目
    • 项目
      • 项目
  1. 项目1
  2. 项目2
  3. 项目3
  • 计划任务
  • 完成任务

创建一个表格

一个简单的表格是这么创建的:

项目Value
电脑$1600
手机$12
导管$1

设定内容居中、居左、居右

使用:---------:居中
使用:----------居左
使用----------:居右

第一列第二列第三列
第一列文本居中第二列文本居右第三列文本居左

SmartyPants

SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

TYPEASCIIHTML
Single backticks'Isn't this fun?'‘Isn’t this fun?’
Quotes"Isn't this fun?"“Isn’t this fun?”
Dashes-- is en-dash, --- is em-dash– is en-dash, — is em-dash

创建一个自定义列表

Markdown
Text-to- HTML conversion tool
Authors
John
Luke

如何创建一个注脚

一个具有注脚的文本。2

注释也是必不可少的

Markdown将文本转换为 HTML

KaTeX数学公式

您可以使用渲染LaTeX数学表达式 KaTeX:

Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n1)!nN 是通过欧拉积分

Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t   . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=0tz1etdt.

你可以找到更多关于的信息 LaTeX 数学表达式here.

新的甘特图功能,丰富你的文章

Mon 06 Mon 13 Mon 20 已完成 进行中 计划一 计划二 现有任务 Adding GANTT diagram functionality to mermaid
  • 关于 甘特图 语法,参考 这儿,

UML 图表

可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:

张三 李四 王五 你好!李四, 最近怎么样? 你最近怎么样,王五? 我很好,谢谢! 我很好,谢谢! 李四想了很长时间, 文字太长了 不适合放在一行. 打量着王五... 很好... 王五, 你怎么样? 张三 李四 王五

这将产生一个流程图。:

链接
长方形
圆角长方形
菱形
  • 关于 Mermaid 语法,参考 这儿,

FLowchart流程图

我们依旧会支持flowchart的流程图:

Created with Raphaël 2.2.0 开始 我的操作 确认? 结束 yes no
  • 关于 Flowchart流程图 语法,参考 这儿.

导出与导入

导出

如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

导入

如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。


  1. mermaid语法说明 ↩︎

  2. 注脚的解释 ↩︎

### MATLAB序列运算的实现方法 在 MATLAB 中,可以通过多种方式实现序列基本运算。以下是关于如何利用 MATLAB 进行序列运算的具体说明: #### 1. 累加 累加功能可以通过 `for` 循环或内置函数 `cumsum` 来实现。 - 使用 `for` 循环时,逐项计算累积和并存储到新的数组中[^1]。 - 利用 `cumsum` 函数可以直接获得输入序列的累计和。 ```matlab % 示例代码:使用 cumsum 实现累加 x = [1, 2, 3, 4]; y_cumsum = cumsum(x); % 输出 y_cumsum = [1, 3, 6, 10] ``` #### 2. 移位 移位操作可通过生成一个随机数并通过条件语句判断其正负来控制左移或右移方向。随后通过矩阵拼接的方式完成实际移动。 ```matlab % 示例代码:实现序列移位 shift_value = randi([-5, 5]); % 随机生成移位值 if shift_value >= 0 shifted_x = [zeros(1, abs(shift_value)), x]; % 右移 else shifted_x = [x(abs(shift_value)+1:end), zeros(1, abs(shift_value))]; % 左移 end ``` #### 3. 翻褶 翻褶是指将序列沿水平轴镜像反转的操作。这可以借助 MATLAB 的 `fliplr` 函数轻松实现。 ```matlab % 示例代码:实现序列翻褶 flipped_x = fliplr(x); ``` #### 4. 抽取 抽取是从原始序列中按指定间隔提取子序列的过程。此过程通常涉及遍历原序列并选取符合条件的元素形成新序列。 ```matlab % 示例代码:实现序列抽取 n = input('请输入抽取步长:'); extracted_x = []; for i = 1:n:length(x) extracted_x = [extracted_x, x(i)]; end ``` #### 5. 插值 插值是在两个相邻样本之间插入额外数据点的技术。一种常见做法是交替插入零值并向目标位置填充原有数值。 ```matlab % 示例代码:实现序列插值 interp_n = input('请输入每两点间需插入的数量:'); interpolated_x = []; for i = 1:length(x)-1 interpolated_x = [interpolated_x, x(i), zeros(1, interp_n)]; end interpolated_x(end+1) = x(end); % 添加最后一个元素 ``` #### 图形化界面 (GUI) 设计支持 为了增强用户体验,还可以设计图形用户界面(GUI),允许交互式调整参数以及实时查看结果变化情况。例如,采用 `subplot` 命令划分绘图区域以便于对比不同处理前后的效果[^3]。 ```matlab % 示例代码:绘制多个子图用于比较 figure; h1 = subplot(2, 2, 1); plot(x,'b'); title('Original Sequence'); h2 = subplot(2, 2, 2); plot(y_cumsum,'r'); title('Cumulative Sum'); linkaxes([h1 h2],'xy'); % 同步坐标轴范围 ``` 以上就是基于 MATLAB 平台下执行各类基本信号/序列变换的主要策略概述及其对应实例演示[^2].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值