| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 597 人关注过本帖
标题:书上例子编译时出错,我茫然了!
只看楼主 加入收藏
lifei2050
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-10-8
收藏
 问题点数:0 回复次数:3 
书上例子编译时出错,我茫然了!

我参考一本书上的例子编了一个用c产生mat文件的程序,发现总有一个问题遗留,怎么也消除不去了,于是我就把书上的例子一摸一样的照搬上去,可同样的问题还是存在,我实在是搞不清楚了。

出错的描述是:
lcc preprocessor error: test.c:19 Disagreement in number of macro arguments
说是:matlab自带的c编译器lcc预处理时出错,“宏参数数目不一致”。

出错的位置是程序里的这个语句:

mxSetName(mdata,"mydata");

这个函数我在matlab的帮助文档里也查不到具体说明,只有一点说明,是说这个函数是老函数,可以用函数matPutVariable代替,但例子里这两个函数都用到了,我参考网上的文章,遇到生成矩阵的mat文件时,这两个函数也都用到了,另外我用的是7.2的版本,也就是R2006a,参考书是关于7.0的,按理说不应该存在兼容问题。


参考书上的例子如下,是产生一个数组和字符串,把它们写入创建的mat文件里,就是最简单的mat文件生成程序:

#include "mat.h"

int makemat(const char *filename,
double *data,int m,int n,
char *mmstr)
{
MATFile *mfile;
mxArray *mdata,*mstr;

mfile=matOpen(filename,"w");
if(mfile==NULL)
{
printf("Cannot open %s for writing.\n",filename);
return(EXIT_FAILURE);
}

mdata=mxCreateDoubleMatrix(n,m,mxREAL);

mxSetName(mdata,"mydata");

memcpy((void *)(mxGetData(mdata)),(void *)data,
m*n*sizeof(double));

mstr=mxCreateString(mmstr);

matPutVariable(mfile,"mydata",mdata);
matPutVariable(mfile,"mystr",mstr);

mxDestroyArray(mdata);
mxDestroyArray(mstr);

if(matClose(mfile)!=0)
{
printf("Cannot close %s.\n",filename);
return(EXIT_FAILURE);
}

return(EXIT_SUCCESS);
}


int main()
{
int status;

char *mmstr="Mastering MATLAB Rocks!";

double data[3][4]={{ 1.0 , 2.0 , 3.0 , 4.0},
{ 5.5 , 6.6 , 7.7 , 8.8},
{-4.0 ,-3.0 ,-2.0 ,-1.0}};

status=makemat("mmtest.mat",*data,3,4,mmstr);

return(status);
}

我现在怀疑版本问题,或者是我的软件完整性的问题,其他真的不知道了,因为这可是和书上一样的,也和网上的参考文章也是一样的,为什么我就不能用呢,真是纳闷了。

搜索更多相关主题的帖子: 例子 编译 
2006-10-08 22:42
lifei2050
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-10-8
收藏
得分:0 

顶,没人能帮我吗?

2006-10-09 10:04
lifei2050
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-10-8
收藏
得分:0 

问题已经解决,可能就是版本问题,这个出错的函数mxSetName(mdata,"mydata");删去后就一切正常了,书是7。0的,我得matlab是7。2的,在7。0里可能mxSetName(mdata,"mydata");和matPutVariable(mfile,"mydata",mdata);都要用,可在7。2里就只要后者就可以了,帮助文档里的解释是出错函数是过时的函数,我现在也没搞清楚它的用途呢。

另外我的mat数据是一个序列,如下
mydata =

Columns 1 through 16

1 -1 1 -1 1 1 -1 1 1 -1 -1 -1 1 -1 -1 -1

Columns 17 through 32

-1 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 1 -1 -1

Columns 33 through 48

1 -1 1 -1 -1 1 -1 -1 1 1 1 -1 1 1 1 1

Columns 49 through 62

1 1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 1

可为什么用sptool导入为信号后,观察该信号就变得三角波,该怎么调整呢,应该是矩形波才对啊,怎么办???

2006-10-09 21:46
abingchem
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:716
专家分:0
注 册:2004-12-30
收藏
得分:0 
呵呵,太专业了

此人已消失
2006-10-10 21:53
快速回复:书上例子编译时出错,我茫然了!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032599 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved