从Matlab文件中读取mxArray类型变量-部分代码分析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从Matlab文件中读取mxArray类型变量-部分代码分析相关的知识,希望对你有一定的参考价值。

这是我做的笔记,看到这个代码时觉得处理有点妙,做笔记记录之。

部分源代码:

。。。。

int main(int argc,char** argv)

{

  char name[_FILE_NAME_LEN];

  int num=0;

  int nFlag1,nFlag2;

  printf("请输入要读取的文件名称(*.mat):");

  scanf("%s",name);

  while ((name[num++] != ‘\0‘) && (num<=_FILE_NAME_LEN-1)) ;   //注意后面是分号,当时我一直以为跟下面一句是连起来组成的一个循环,其实不是。

  num=num-1;  //下面的代码是文件名的处理。

  if (num>_FILE_NEME_LEN-5)  //为什么是减5 呢,后面代码可以知,这是为了为加上后缀留下空间。

    {

      printf("输入的文件名太长!\n");

      return 0;

    }

  nFlag1=strcmp(name+num-4,".MAT");  //该如何理解呢?根据后面的判断,可以知前面的要大于后面的,假设成立,然后逆推。

                    //name是数组名,是指向name[0]的指针,所以是数组的表示知识,

                    //所以这个应该是处理用户输入的文件名中是否加入后缀的判断处理。

  nFlag2=strcmp(name+num-4,".mat");

  if(nFlag1&& nFlag2)

  {

    name[num]=‘.‘;

    name[name+1]=‘M‘;

    name[name+2]=‘A‘;

    name[name+3]=‘T‘;

    name[name+4]=‘\0‘;

  }

  analyze_matfile(name);  //自定义的目标函数

  getchar();

  retuen 0;

}

以上是关于从Matlab文件中读取mxArray类型变量-部分代码分析的主要内容,如果未能解决你的问题,请参考以下文章

使用 Matlab Coder 将 Matlab m 文件转换为 C/C++ 代码,包括 mex 文件 (mxArray)

Matlab/Mex:mxarray.h 中的转换警告

如何在“mwArray *”和“mxArray *”之间传输数据?

在 MATLAB Coder 中将 mxarrays 与 step 函数一起使用的问题

我应该如何将数据传递给 mexFunction 的 mxArray *plhs[] 以便在 Matlab 中获得其输出?

从文件中读取字符串并将其不同部分保存在 C++ 中的不同变量中