2

私は趣味のプロジェクトとして一種のシミュレーターを開発しています。私が問題を抱えている特定の関数は、行列から行を取得し、50 ミリ秒ごとに関数に供給しますが、私は Matlab スクリプトの初心者であり、助けが必要です。

タイマーがクリックするたびに、マトリックスの次の行が関数「simulate_datapoint()」に提供されます。Simulate_datapoint() は行を取得し、いくつかの計算マジックを実行して、tracks 配列内の複雑な「track」オブジェクトを更新します。

これは、この問題を解決しようとする完全に逆の方法ですか、それとも実用的な解決策に近づいていますか? どんな助けでも大歓迎です。

これが私が今持っているもので、うまくいきません:

function simulate_data(data)
    if ~ismatrix(data)
        error('Input must be a matrix.')
    end

    tracks = tracks_init(); % create an array of 64 Track objects.
    data_size = size(data,1); % number of rows in data.
    i = 0;
    running = 1;

    t = timer('StartDelay', 1, 'Period', 0.05, 'TasksToExecute', data_size, ...
          'ExecutionMode', 'fixedRate');
    t.StopFcn = 'running = 0;';
    t.TimerFcn = 'i = i+1; simulate_datapoint(tracks, data(i,:));';

    disp('Starting timer.')
    start(t);

    while(running==1)
        % do nothing, wait for timer to finish.
    end

    delete(t);
    disp('Execution complete.')
end
4

1 に答える 1