【问题标题】:Adding offset and delay添加偏移和延迟
【发布时间】:2018-01-23 02:58:24
【问题描述】:

我有一个信号,我想在其中引入几个偏移和延迟,其中偏移范围从 0.55,延迟范围从 17

我在这里提供一个示例信号来演示我遇到的问题,但我的真实数据的大小是 1x1666520。

如何将这些更改引入信号?

示例代码:

t  = [ 0 : 1 : 50];           % Time Samples
f  = 45;                      % Input Signal Frequency
Fs = 440;                     % Sampling Frequency
data = sin(2*pi*f/Fs*t)'; 

T.InputOffset = 5;
T.OutputOffset = 5;

addoffset = retrend(data);
Y = step(delay,data);

figure(); plot(t,addoffset,t,Y);

【问题讨论】:

  • 下次,请在问题正文中说明您遇到的错误/问题。
  • 非常感谢,下次我还会附上我遇到的错误类型
  • Dev-iL 可以看看最新一期吗。
  • 这不是 Stack Overflow 的工作方式。如果您有新问题,您应该打开一个新问题并提供该问题的链接以供参考。创建新问题后,应回滚上次的编辑。
  • Dev-iL 我以为它会成为一个重复的问题,所以这就是为什么没有制作一个新的 qurrey。

标签: matlab time-series signal-processing sampling


【解决方案1】:

在尝试运行您的示例代码时,我收到此错误:

未定义函数retrend 用于double 类型的输入参数。

这是因为retrend 函数是System Identification Toolbox 的一部分,它需要data object (iddata) 作为输入。

如果您有上述工具箱,您可以像example for retrend 一样创建一个数据对象,然后添加一个类似于您已经尝试过的趋势

据我了解,添加 延迟 比较棘手,因为您需要保持相同的向量长度。您可以在正确的方向上使用一些虚拟值(例如NaN)填充您的向量。

应用于您的案例,我们得到:

function q45688607
%% Generate data:
t  = (0 : 1 : 50).';       % Time Samples
f  = 45;                   % Input Signal Frequency
Fs = 440;                  % Sampling Frequency
y = sin(2*pi*f/Fs*t); 
d_data = iddata(y, t, 1/Fs);

%% Add offset:
T = getTrend(d_data); 
% <detrend data if needed>
T.InputOffset = 5;
T.OutputOffset = 5;
afterOffset = retrend(d_data,T);

%% Add delay: 
delaySamples = 8; % Must be a non-negative value
afterDelay = iddata([NaN(delaySamples,1); d_data.OutputData],...
                    [d_data.InputData; NaN(delaySamples,1)], 1/Fs);    
%% Plot:
figure(); plot(d_data,afterOffset, afterDelay);

产量:

【讨论】:

  • 非常感谢 Dev-iL 这是我一直在寻找的完美答案,只是想知道我是否想为不同的偏移和延迟值集做这个
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-03
  • 1970-01-01
  • 1970-01-01
  • 2015-09-07
相关资源
最近更新 更多