2017-04-10 37 views
0

我想寫一個模擬器,它將模仿從傳感器(串行通信)讀取數據,只不過它將從先前保存的文件中讀取它們。我知道,如果我使用加載函數將讀取整個文件,所以我想用一個循環來掃描加載文件的矢量,並以一定的頻率進行掃描。現在這將非常快,它不會像實時閱讀。我如何使它以較慢(可能是固定的)頻率讀取加載的文件,以使其看起來像是實時流式處理數據?模擬實時數據流Matlab

感謝

回答

0

您應該加載整個文件,然後拉出框架,並在這些幀進行計算。

喜歡的東西:

load('sensordata'); 

framelength = 1024; % Datapoints 
Fs = 48000; % 48kHz 
frame_duration = 0.01; 
frame_length = frame_duration*Fs; 
N = length(sensordata); 
num_frames = floor(N/frame_length); 


for i = 1:num_frames 
    frame = sensordata((i-1)*frame_length+1:frame_length*i); 
    %% Do actions here 

end 

這裏解釋它完美的視頻:https://www.youtube.com/watch?v=wpXtsRpaLOA&t=944s

+0

我已經嘗試過你的建議,但是當我繪製數據它的速度非常快,不會像實時繪製。這是因爲循環運行速度非常快,並執行代碼,我嘗試使用暫停,但我認爲最小暫停爲0.001。我仍在試驗它,我希望它能起作用。非常感謝 – Isra

+0

您是否有權訪問Matlab中的音頻系統工具箱?它特別適用於實時處理,其中「step()」函數允許您根據您的採樣頻率讀入和讀出數據,也就是說,如果您的算法處理時間允許,可以準確實時地進行實時處理。 – matiastofteby

+0

matiastifteby不,我沒有它,但我確信可以從Mathworks.com上找到一個試用版。非常感謝你! – Isra