Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用MATLAB定时器使用更新的值更新.csv文件_Matlab_Loops_Csv_Timer - Fatal编程技术网

使用MATLAB定时器使用更新的值更新.csv文件

使用MATLAB定时器使用更新的值更新.csv文件,matlab,loops,csv,timer,Matlab,Loops,Csv,Timer,我有一个计时器,它每分钟更新脚本中的一个值 Period = 60; % Update period in seconds tim = timer('Period', Period, 'ExecutionMode', 'fixedRate',... 'TimerFcn', 'MyScript'); start(tim) stop(tim) 每次计时器重置时,我希望将更新的值存储在.csv文件的下一行(同一列)中 %Writes the current value to

我有一个计时器,它每分钟更新脚本中的一个值

Period = 60; % Update period in seconds

tim = timer('Period', Period, 'ExecutionMode', 'fixedRate',...
    'TimerFcn', 'MyScript');

start(tim)

stop(tim)     
每次计时器重置时,我希望将更新的值存储在.csv文件的下一行(同一列)中

%Writes the current value to 60 mins.csv in row 1, column 1

csvwrite('60 mins.csv',MyValue,0,0);
我的猜测是,我需要一个计数器来随着每次更新的值/计时器迭代增加行号。我想收集至少1440个值(一整天)

有什么想法吗

注意:计时器应该将整个脚本放在一个无限循环中,以防有人怀疑

编辑:我尝试使用Alamakanambra的解决方案(不起作用)


检查csv的长度并增加当前行的写入值:

编辑: 好了,现在我明白了:

或: csvwrite('60分钟.csv',[csv;MyValue],0,0)


csvwrite
没有附加函数,因此当您执行此操作时

csvwrite('60分钟.csv',MyValue,len+1,0)

它用空值填充
len,0
之前的空格,然后将值放在后面(根据您打开文件的方式,您可能只能在顶部看到一个值,如果在Excel或类似工具中打开,您将看到空白)

相反,请使用
dlmwrite

dlmwrite('60分钟.csv',MyValue',-append')

不需要检查长度或指定行号;这只是将每个新值附加到文件的末尾。如果要在每个步骤中保存其他值,请说出时间和测量值:


dlmwrite('60分钟.csv',[time,MyValue],'-append')

我使用的是
csvwrite('60分钟.csv',MyValue,0,0)
创建初始值,但这不起作用。您的代码只是在每次计时器重置时将值移动到下一行。对不起,为了更好的可读性,我已经包含了重新尝试使用您的代码。它在线程的主体中。现在我很困惑。什么不起作用?与csvwrite一致?值未更改?计时器不工作?我的脚本(由于太大而未包含)使用计时器每分钟更新一个值。我想将更新后的值添加到csv文件中,并将以前的值存储在上一行的同一csv文件中。即值=4添加到csv,计时器运行新值=64添加到csv下一行,计时器运行新值=38添加到csv下一行等。您的解决方案不会这样做。它不会保存旧值。如果您有帮助,请邀请我聊天。这非常有用。但是使用
dlmwrite('60分钟.csv',MyValue',append')仅更新前两行中的值。在计时器重复的第3、4、5分钟内,不会添加第3行、第4行、第5行等。想法?没关系。我删除了csvwrite/dlmwrite的所有实例,只使用了一行
dlmwrite('60min.csv',MyValue',-append')成功了。非常感谢。
%Creates a new csv and writes MyValue to a csv at position 0,0
csvwrite('60 mins.csv',MyValue,0,0);

%Read csv and get csv length
csv = csvread('60 mins.csv'); 
len = length(csv); 


csvwrite('60 mins.csv',MyValue,len+1,0);
csv = csvread('60 mins.csv'); 
len = length(csv); 
csvwrite('60 mins.csv',MyValue,len+1,0);
csvwrite('60 mins.csv',[csv MyValue],0,0);