发布
社区首页 >问答首页 >用于在不同时间间隔添加两个信号的MATLAB代码

用于在不同时间间隔添加两个信号的MATLAB代码
EN

Stack Overflow用户
提问于 2022-06-03 18:02:18
回答 1查看 340关注 0票数 0

我有两个正弦波互相移动180度。我想从这两个信号中产生另一个信号,但为此,我必须分别添加单独的间隔,其结果也应该是连续的。

这里有两个正弦波:

代码语言:javascript
代码运行次数:0
复制
t = 0:0.00001:0.02;

w= 2*pi*50;
ma = 0.8*sin(w*t);
mb = 0.8*sin(w*t-pi);

现在我想创建另一个信号mcm。如果间隔为"0到0.005 (季度周期)“,我需要mcm = 1 + ma。对于"0.005到0.01“间隔,我想要mcm = 1 + mb

其他两个季度也是如此。

我们该怎么做呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-04 06:51:06

在下面的注释中更改问题后进行编辑

考虑到需要将其概括为多个周期(注意添加了用户定义的输入n =周期数),下面是我的建议。

首先,必须明确地定义每个函数。其次,对于t长度上的每个点,需要(显式)定义在该数据点上需要使用的函数。

因此,在下面的代码中,functionsfunctionOrder用于设置要使用的函数以及使用它们的顺序/频率。

Calculate mcm部分中,变量ind用于迭代输出,并选择要在每个点使用的函数。

代码语言:javascript
代码运行次数:0
复制
% User inputs
f = 50;
n = 3; % number of cycles
inc = 0.00001; % increment

% Preliminaries
t_interval = 1/f;
t = 0:inc:t_interval*n; 
t = t(1:end-1);

w = 2*pi*f;
ma = 0.8*sin(w*t);
mb = 0.8*sin(w*t-pi);

% Define mcm
f1 = @(ii) -1 - mb(ii);
f2 = @(ii)  1 - ma(ii);
f3 = @(ii) -1 + mb(ii);
f4 = @(ii)  1 - mb(ii);
functions = {f1, f2, f3, f4};
functionOrder = [1 2 3 4];

% Calculate mcm
ind = repmat(functionOrder, round(t_interval/inc)/length(functionOrder), 1);
ind = reshape(ind, numel(ind), 1);
ind = repmat(ind, n, 1);

mcm = zeros(size(ind));
for ii = 1:length(ind)
    mcm(ii) = functions{ind(ii)}(ii);
end

% Plot
figure; plot(t,ma);
hold on; plot(t,mb);
plot(t, mcm);

================================================

先前对更简单问题的回答,不需要泛化。

我处理这一问题的方式是在当前情况下的易用性和在示例变化时易于复制/动态之间的折衷。

首先,创建一个变量,该变量指示应该在何处使用ma和应该使用mb。请注意,使用0和1可以使以后的步骤更容易:如果在这个分段操作中有更多的函数可供使用,则此指示符的构造必须不同。

代码语言:javascript
代码运行次数:0
复制
ind = zeros(size(t)); %indicator
ind(t >= 0.000 && t < 0.005) = 1;
ind(t >= 0.010 && t <=0.015) = 1;

然后,添加mamb相对简单。

代码语言:javascript
代码运行次数:0
复制
mcm = 1 + ind.*ma + (1-ind).*mb;

请注意,这遵循了文本中描述的数学公式,但结果曲线并不是连续的。我看不出有什么方法可以让mamb在每个季度周期交替,而且曲线也是连续的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72493503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档