关于unity写txt文件与MATLAB实时显示曲线

这篇博客介绍了如何在C#中使用StreamWriter清除并追加写入文件,确保MATLAB能实时读取并绘制数据。关键步骤包括在Start时清空文件,Update时追加数据,并确保每次写入后关闭文件流。MATLAB通过importdata函数读取文件,利用drawnow实现绘图的实时更新。
摘要由CSDN通过智能技术生成

 C#中使用StreamWriter向流中写入数据,需要System.IO命名空间。

首先为了让每次运行时都刷新文件内容,需要在Start的时候清除掉文件里已经有的东西。

    void Start()
    {
        StreamWriter Output = new StreamWriter("D:/test.txt");
        Output.Flush();
        Output.Close();
        Output.Dispose();//这几句是将文件内的内容全部清除掉,防止上一次运行的结果发生干扰
    }

随后在update里面做写入的操作。

        StreamWriter Output;
        FileInfo fi = new FileInfo("D:/test.txt");
        Output = fi.AppendText();//append为追加文本
        Output.WriteLine(Angles[0].ToString());//writeline为写一行,write为直接写
        Output.Close();
        Output.Dispose();    

注意写完以后一定要关掉文件流,要不然第二次new一个文件流的时候会被上一次的占用,导致无法写入。测试了一下,不Dispose暂时也没有发现什么问题,但是一定要close。

此外关于matlab实时读取txt的事情。事实证明,这样操作C#写入TXT后是实时保存的,用matlab去读也不会存在文件占用的问题。并且,matlab在读取文件的时候会自动分列,于是在写入的时候只需要在各个数据之间加上空格就可以了。matlab读出来是一个二维数组,然后再对这个数组做处理就行。

关于matlab实时绘图的问题。

while(1)
  data=importdata('D:/test.txt');
  y=data;   %如果源文件内的数据为一个二维的矩阵,有多列,那么matlab会按照空格自动分列。
  len=length(y);
  x=1:len;
  %subplot(2,1,1);plot(x,y);
  %subplot(2,1,2);plot(x,y-1);
  plot(x,y);
  drawnow;
end

关键在于drawnow,立即绘图,就可以实现实时刷新图像。

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值