每五分钟Matlab将数据写入文本文件

时间:2016-04-18 12:58:25

标签: matlab matlab-guide data-export

假设vec_A,vec_B,vec_c是一些带有随机数据的矩阵。我想每5分钟将数据写入文本文件,我的代码如下:

var uri = 'data:application/vnd.ms-excel;base64,'
            , template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>'
            , base64 = function(s) { return window.btoa(unescape(encodeURIComponent(s))) }
            , format = function(s, c) { return s.replace(/{(\w+)}/g, function(m, p) { return c[p]; }) }
              var table='exportable';
              var name='Report';
             // console.log('table',table,name);
            if (!table.nodeType) table = document.getElementById(table)
            var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML}
            window.location.href = uri + base64(format(template, ctx));

运行我的代码时,会出现以下错误:

  

评估TimerFcn for timer&#39; timer-6&#39;时出错

     

输入参数太多。

如何在这种情况下执行计时器,以便每五分钟成功写入一次数据,或者建议采用其他任何方式来执行此操作。

1 个答案:

答案 0 :(得分:2)

您已将TimerFcn定义为{@open, hObject},但您没有名为open的功能。相反,它试图使用三个输入参数(计时器对象,事件对象和hObject)调用内置open,这会产生错误,因为open只接受一个输入参数。

话虽如此,但我们并不清楚你所提供的代码将如何完成任何接近你想要的东西。这样的事情可能会更好。

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