matlab - matlab如何把方波信号变成三角波
问题描述
我想把下面的方形信号变成三角形信号。我怎么做?我曾尝试使用锯齿/方形函数来做到这一点,但我必须在不使用这些函数的情况下做到这一点(另外,锯齿不是三角形的,所以就这样)。我已经设法编写了方形信号的代码,但我不知道究竟要改变什么才能使它成为三角形。
P=40;
D=12;
N=50;
f=1/P;
w0=2*pi*f; %angular frequency
rez=0.1; %signal's temporal resolution
s1=[ones(1,D/rez),zeros(1,(P-D)/rez)]; %a period of the square signal
t=0:rez:P; %equivalent time for a period
perioada=P/rez;%number of samples in a period
inter1=0:rez:P;
stem(inter1(1:400),s1)
title('Square Signal x(t)'),
xlabel('t[s]')
ylabel('A')
semnal=repmat(s1,1,5);%initial signal repeated 5 times
figure
plot(semnal)
title('5 periods from the signal')
xlabel('t[s]')
ylabel('A')
解决方案
您可以s1
通过构建左三角形边、右三角形边并连接两边来创建三角形。
使用linspace from 1
to 0
with D/rez+1
points构建左侧:
s1_left = linspace(1, 0, D/rez+1);
使用linspace from 0
to 1
with (P-D)/rez+1
points构建右侧:
s1_right = linspace(0, 1, (P-D)/rez+1);
连接左右部分(1:end-1
用于平滑过渡)
s1 = [s1_left(1:end-1), s1_right(1:end-1)];
这是完整的(更新的)代码:
P=40;
D=12;
N=50;
f=1/P;
w0=2*pi*f; %angular frequency
rez=0.1; %signal's temporal resolution
%s1=[ones(1,D/rez),zeros(1,(P-D)/rez)]; %a period of the square signal
s1_left = linspace(1, 0, D/rez+1); %Left size of triangle
s1_right = linspace(0, 1, (P-D)/rez+1); %Right size of triangle
s1 = [s1_left(1:end-1), s1_right(1:end-1)]; %Concatenate left part and right part (use 1:end-1 for creating smooth connection).
t=0:rez:P; %equivalent time for a period
perioada=P/rez;%number of samples in a period
inter1=0:rez:P;
stem(inter1(1:400),s1)
title('Square Signal x(t)'),
xlabel('t[s]')
ylabel('A')
semnal=repmat(s1,1,5);%initial signal repeated 5 times
figure
plot(semnal)
title('5 periods from the signal')
xlabel('t[s]')
ylabel('A')
推荐阅读
- symfony - Symfony 3 - 渲染视图后替换字符串(注释)
- amazon-web-services - 如何知道 EC2 是否已注册到某个负载均衡器?
- laravel - 文件存储不工作。拉拉维尔 5
- c# - C# 询问用户需要合并的 PDF 位于哪个目录中。然后问用户什么新的子文件夹将被称为合并的 PDF 将去哪里?
- python - 如何在更新触发器之前使用 postgresql?这不执行只正确编译
- sql - 将列转换为单行并选择唯一条目
- python - list_directories_and_files 上缺少 Azure FileProperties 内容
- django - 如何在 Windows 机器上用 django 测试 celery
- spring - 何时使用基于 Spring Security 的场景
- angular - 使用 Typescript + Angular 填充日期输入