1

我需要模拟传感器发送数据以测试我的算法。如何在 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 是采样频率。我想每 0.02 秒或 50 Hz 将 x 的一个元素放入我定义的函数中。所以,当我的函数启动时,我会得到 x(1),然后在 0.02 秒后我会得到 x(2),依此类推......

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

4

2 回答 2

1

这可以使用计时器对象来完成:

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
于 2013-10-07T19:57:10.437 回答
0

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

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

假设处理您的时间所花费的时间是不屑一顾的,这将起作用。如果不是,您可能需要考虑 tic-toc 以获取 t- 处理时间,然后暂停 0.02-t。

于 2013-10-07T19:28:13.437 回答