如何在MATLAB中模拟在线数据到达?

时间:2013-10-07 19:05:17

标签: matlab

我需要模拟传感器发送数据以测试我的算法。我怎样才能在MATLAB中做到这一点?例如,假设我像这样创建一个嘈杂的正弦波:

t = [0:1:1000];
vn = .2;
f = .5;
fs = 50;
x = 4*sin(2*pi*f/fs*t) + vn*rand(size(t));

x仅为模拟数据,其中f为信号频率,fs为采样频率。我希望每隔.02秒或50赫兹将x中的一个元素放入我定义的函数中。所以,当我的函数开始时我会得到x(1),然后在0.02秒后我会得到x(2)等等......

我非常感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:1)

这可以使用timer对象来完成:

x = 11:20; % some test data
myFunction = @(i) disp(x(i)); % test function that just displays x(i)
i = 1;

% configure the timer
t = timer;
t.TimerFcn = 'myFunction(i); i = i + 1;'
t.StopFcn = @(timerObj, ~) delete(timerObj) % required according to manual
t.Period = 0.5; %change this later to 0.02
t.ExecutionMode = 'fixedRate';
t.TasksToExecute = length(x);

start(t) % start the timer

答案 1 :(得分:0)

如果您想要非常准确,可以暂停执行所需的时间。例如:

for i=1:1:length(x)
 .....
 pause(0.02)
end

这将有效,假设处理您的时间所花费的时间是不允许的。如果不是,您可能需要考虑tic-toc来获得t-处理所需的时间,然后暂停0.02-t。