2016-04-18 32 views
0

vec_A、vec_B、vec_cはランダムなデータを持つ行列です。タイマー-6」タイマーのTimerFcnを評価しながら5分ごとのテキストファイルにデータを書き込むMatlab

エラー:私はすべての5分間のテキストファイルにデータを書き込みたい、私のコードは次のように:

function samplegui_OpeningFcn(hObject, ~, handles, varargin) 

handles.timer = timer(... 
     'ExecutionMode', 'fixedRate', ... % Run timer repeatedly 
     'Period', 300, ...    % Initial period. 
     'TimerFcn', {@open,hObject}); % Specify callback 

handles.output = hObject; 
handles.vec_A=[]; 
handles.vec_B=[]; 
handles.vec_C=[]; 
guidata(hObject, handles); 

function open_Callback(hObject, eventdata, handles) % push button to receive serial data. 

cnt=0; 

while 1 

     % Getting data from Serial Port 
     get_lines=fgets(handles.se) % getting data from serial port 
      if~isempty(get_lines) 
      cnt=cnt+1; 
     if strfind(get_lines,'T') %Parsing data 
     handles.vec_A=[handles.vec_A;[timet newword]]; 
     plot(handles.vec_A(:,1),handles.vec_A(:,2:end),'r'); % plotting 

     % Same follows for parsing and plot vec_B and Vec_C 
     drawnow(); % to update the Plots 
     end 
    end 
Pause(.05); 

     start(handles.timer); % saving the data 
     dlmwrite('My_sample1.txt',handles.vec_A); 
     dlmwrite('My_sample2.txt',handles.vec_B); 
     dlmwrite('My_sample3.txt',handles.vec_C); 
     stop(handles.timer); 
end 
guidata(hObject, handles); 

私のコードを実行している間に、次のエラーが発生します'

入力引数が多すぎます。

この場合、タイマーを実行して5分ごとにデータを正常に書き込む方法や、それ以外の方法を提案する方法。

+0

質問は何ですか?または、あなたのコードの問題は何ですか? – Lati

+1

@Lati編集した投稿を見てください。 – MaK

答えて

2

{@open, hObject}と定義しましたが、openという名前の関数はありません。代わりに、openは入力引数を1つしか受け入れないため、組み込みのopenを3つの入力引数(タイマオブジェクト、イベントオブジェクト、およびhObject)で呼び出しようとしています。

言われているように、あなたが提供したコードが、あなたが望むものに近い何かを達成する方法はまったく明らかではありません。このようなものがうまくいくかもしれません。

function samplegui_OpeningFcn(hObject, ~, handles, varargin) 

    handles.timer = timer(... 
      'ExecutionMode', 'fixedRate', ... % Run timer repeatedly 
      'Period', 300, ...    % Initial period. 
      'TimerFcn', @(s,e)write_data()); % Specify callback 

    handles.output = hObject; 
    handles.vec_A=[]; 
    handles.vec_B=[]; 
    handles.vec_C=[]; 
    guidata(hObject, handles); 

    start(handles.timer); 

    %// Now update your data in a loop 

    cnt = 0; 

    while true 
     %// Getting data from Serial Port 
     get_lines = fgets(handles.se) 
     if ~isempty(LINES) 
      cnt = cnt + 1; 
      if strfind(LINES, 'T') 
       handles.vec_A = [handles.vec_A; [timet newword]]; 
       plot(handles.vec_A(:,1), handles.vec_A(:,2:end),'r'); 
       drawnow 
      end 
     end 
    end 

    function write_data() 
     %// Write it to file 
     dlmwrite('My_sample1.txt',handles.vec_A); 
     dlmwrite('My_sample2.txt',handles.vec_B); 
     dlmwrite('My_sample3.txt',handles.vec_C); 
    end 
end 
+0

これは私の目的に役立たない。私のポストのオープン機能は、収集するためにシリアルポートからリアルタイムでデータを受信するプッシュボタンです。データを保存します。 – MaK

+0

@MaKもちろん、正確には*あなたが必要とするものはありません。なぜなら、1)あなたは関連するコードを表示していないからです.2)これは、サンプルデータを使って*行う方法のデモンストレーションです。ユースケースに少しだけ適応する必要があります。初心者の方には、もしあなたが 'open'機能を持っていれば**問題がどこにあるのかを**私たちに見せてください。 – Suever

+0

まだ情報が必要な場合は、コードを簡単に記載しました。お知らせください。 – MaK

関連する問題