ROS交流群
ROS Group
产品服务
Product Service
开源代码库
Github
官网
Official website
技术交流
Technological exchanges
激光雷达
LIDAR
ROS教程
ROS Tourials
深度学习
Deep Learning
机器视觉
Computer Vision

Matlab 动态生成执行语句及构造动态输入变量名



  • 对于matlab,自动化benchmark某子功能程序块时需要将一些变量dump出来,怎么将dump出来的变量放在一起调试呢?dump变量是用save,load变量就用load语句,但是保存的变量名是一样的时候就不能同时load了,会发生覆盖。如果每个运行实例中,这个变量的名字都是不同的,就不存在这个问题了。下述代码段将根据数值变量num的值,动态生产A变量副本的名字,并保存A变量副本到不同的文件中,num变量通常是测试实例的编号,这样后续调试时可以快速定位当时运行的benchmark实例

    str_temp=sprintf('A_%d=A',num);
    eval(str_temp);
    str_temp=sprintf('save(''A_%d.mat'',''A_%d'');',num,num);
    eval(str_temp);
    

    用sprintf动态生产语句,eval执行语句,就可以了,留意双引号与单引号在matlab中的区别。
    利用字符串格式化函数sprintf来构造动态执行语句,对于自动化脚本是一个根本性地技巧。特别是matlab,因为它的很多库函数的输入变量都用字符串表示。比如,下文的代码段,将自动批量load一组dump出来的变量

    for num=1:666
          load(sprintf('A_%d.mat',num));
    end
    
     利用这些特性,甚至可以在matlab中直接执行python程序,有机会我将提供一个例子