我需要模拟传感器发送数据以测试我的算法。我怎样才能在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)等等......
我非常感谢您提供的任何帮助。
答案 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。