收藏 分销(赏)

C语言实现MATLAB_6[1].5中M文件的方法.doc

上传人:二*** 文档编号:4708662 上传时间:2024-10-10 格式:DOC 页数:148 大小:329KB
下载 相关 举报
C语言实现MATLAB_6[1].5中M文件的方法.doc_第1页
第1页 / 共148页
亲,该文档总共148页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、C语言实现MATLAB 6.5中M文件的方法摘要:本文着重描述了运用MATLAB命令将M文件翻译为C语言程序,并修改为可直接调用的C语言函数的方法,使用该方法所需要注意的方法局限性和MATLAB版本差异的影响。运用该方法将能够使C语言能直接使用MATLAB当中已经完成的数学计算功能,大大扩充了C语言的数学计算功能和开发效率。 关键词:MATLAB;M文件;C语言接口 众所周知,MATLAB是一个功能强大的数学软件,擅长于用矩阵运算完成各种数学功能。但是其程序需要在MATLAB环境下解释执行,效率不高。如果能将它强大的函数库用于C语言,利用C来编译执行,MATLAB将能发挥更大的作用。所以,MA

2、TLAB从5.0开始已经提供了与外部C/C+程序的应用程序接口,为利用C语言调用MATLAB的函数提供了可能。但是MATLAB的接口发展很快,到MATLAB 6.5已经提供了对VC 7.0的支持,同时对C的接口相对于5.X版本有了一定的改变。 在MATLAB当中,我们利用M文件来实现函数,每一个M文件实现一个单独的功能,这一点和C语言当中的函数是相互对应的。所以,如果我们能将MATLAB中的M文件转化为C语言下的一个单个函数,就能实现MATLAB中相应的功能。 实现方法 整个过程可分为三个主要部分,用MATLAB将M文件翻译为C语言文件,从生成的C语言文件提取出有用语句,编写数据转换程序实现参

3、数格式转换。整个过程最终将把M文件翻译成C语言当中的一个具有相同功能的函数,供其它的程序调用。 本文用一个最简单的M文件来示例: 文件名:messay.mfunction c=messay() a=3.4; b=5.6; c=sqrt(a)+sqrt(b); 该m文件实现了计算 1、将M文件编译为C语言文件 为了将M文件翻译为C语言文件,需要进行一定的设置,这里假设编写C语言的环境为VC6.0,在MATLAB命令提示符下输入mex -setup和mbuild -setup命令,在相应选项中选择Microsoft Visual C/C+即可。 在MATLAB命令行中使用mcc命令将messay.

4、m翻译为C代码。 mcc -m messay.m 其中的参数-m代表mcc命令将把m文件翻译成C语言的代码。 真的不掉线吗?、? 翻译命令将在messay.m所在的文件夹下生成三个C语言文件: messay.h,messay.c和messay_main.c。其中messay_main.c提供了main()函数;messay.h提供了整个程序的函数声明;messay.c包含了MATLAB生成的功能函数。这三个文件当中,messay.c中包含了我们所需要的数学函数。 2、提取有用语句 通过分析,发现由mcc生成的代码内部参数传送方式由MATLAB链接库规定,难以改动,因此需要提取有用的代码,并更改

5、生成代码的参数传递方式。同时从生成代码的注释中可以看出,真正蕴含M文件功能实现的代码段都在Mmessay()函数当中(该函数名的默认构造方式为前缀M加上M文件的文件名),而其它的生成函数仅实现参数传递和标准化接口服务的功能。 所以提取代码的具体方法是利用messay.c当中生成的static mxArray * Mmessay(int nargout_)函数,对该函数进行修改,而其他的生成函数都可以忽略不用。原生成的Mmessay()代码如下:static mxArray * Mmessay(int nargout_) mexLocalFunctionTable save_local_func

6、tion_table = mclSetCurrentLocal FunctionTable(&_local_function_table_messay); mxArray * c = NULL; mxArray * b = NULL; mxArray * a = NULL; mlfAssign(&a, _mxarray0_); mlfAssign(&b, _mxarray1_); mlfAssign(&c, mclPlus(mlfSqrt(mclVv(a, a), mlfSqrt(mclVv(b, b); mclValidateOutput(c, 1, nargout_, c, messay)

7、; mxDestroyArray(a); mxDestroyArray(b); mclSetCurrentLocalFunctionTable(save_local_function_table_); return c; 在生成代码当中,mclSetCurrentLocalFunctionTable和mclSetCurrentLocalFunctionTable函数为两个外部函数,将参数传给外部,与其相关的部分都对C程序使用数学函数没有影响。最终实际有用并执行运算的只有一句:mlfAssign(&c, mclPlus(mlfSqrt(mclVv(a, a), mlfSqrt(mclVv(b,

8、b); 实际上,由MATLAB翻译的C语句中,大部分的和实际计算有关的语句和自生成的函数都以mlf开头,所以寻找有用语句的简单方法就是直接寻找mlf为前缀的代码。 真的不掉线吗?、? 3、参数格式转换 应当指出,MATLAB所有的计算都是基于一种名为mxArray的数据结构之上的,所有的浮点数、向量或者是矩阵在MATLAB当中都是通过 mxArray结构来进行存储和传递的。当然,MATLAB所提供的所有数学函数也都是基于这样一种数据结构进行运算的。所以,要使用MATLAB的生成代码,就必须将C语言当中常用的浮点数和整数转换为mxArray结构。 本例中利用MATLAB函数mxArray *ml

9、fScalar(double v)和函数double *mxGetPr(mxArray *)来实现参数格式转换。函数mlfScalar()将double型变量存入一个新建的mxArray结构中,并返回指针,而函数mxGetPr()将 mxArray结构保存的实数的实部取出。至于其它参数转换方法可参看参考文献3中的相关部分。 最终可以编写这样一个利用了MATLAB数学函数并实现计算的函数:double Mmessay(double ina, double inb) mxArray *a,*b,*c; /三个用于MATLAB数学函数计算的参数 double *outc; /计算结果变量 a=mlf

10、Scalar(double)ina); /利用mlfScalar()进行类型转换 b=mlfScalar(double)inb); mlfAssign(&c, mclPlus(mlfSqrt(mclVv(a, a), mlfSqrt(mclVv(b, b); outc=mxGetPr(c); /c获得结果的实部,即结果 mxDestroyArray(a); /释放空间 mxDestroyArray(b); mxDestroyArray(c); return *outc; 到此,整个翻译过程完成,但是还不能直接调用。在这个函数当中运用到了MATLAB的数学库函数mlfSqrt()、mlcPlus

11、()和数据转换函数 mlfScalar()、mxGetPr()。由于这些函数是固化在链接库当中的,为了连接执行,必须加入几个库文件和几个静态链接库lib文件。所需要的库文件为mcc命令生成的messay.c文件当中所加入的库文件,一般为libmatlb.h,而需要加入的静态链接库文件如下:libmat.lib,libmatlb.lib,libmex.lib,libmx.lib 如果没有以上文件,可以用VC的lib命令将MATLAB相应的def文件转化为lib文件,转化格式为lib /def:filename.def /machine:ix86 /out:filename.lib。 方法的局限

12、使用本文所用的方法可以将M文件翻译为C语言的函数,但是要受到两个因素的制约。 1、功能的实现受到MATLAB C函数库的限制 这种翻译的机制是由MATLAB提供的,mcc命令能直接翻译的函数也仅局限于真的不掉线吗?、?MATLAB原有的函数。因为这些函数已经被MATLAB6.5编译好,一般以mlf为前缀,存于动态链接库当中并可被C语言直接调用。这些函数在参考文献4中可以查到。而超出了这个范围的函数,并在M文件当中被嵌套使用,在用mcc进行翻译的时候,mcc将在函数名前加上前缀mlf,并进一步翻译该函数。 但是,这种翻译受到MATLAB参数传递的限制,而不能直接调用,在编译时会出现找不到相应的外

13、部函数的错误。解决办法是手动将所有被翻译的函数进行参数传递方式的调整。如果M文件当中包含的函数被嵌套翻译的层数很深,这样的工作量是巨大而且不可接受的。 同时很多工具箱当中定义的函数也是不能使用这种方法进行翻译的。MATLAB的工具箱更新速度很快,而相应的MATLAB C的函数库有一定滞后,导致很多最新的工具箱当中的函数是不能被翻译的。 2、翻译本身存在的限制 因为这种翻译是遵守C语言要求的,因而对于内存分配要求和C语言不同的函数和一些关于图形显示类型的函数(包括大量的GUI相关函数)也不能被正确的翻译。例如mash.m和step.m这两个较常用的MATLAB函数,由于上述的限制,就不能用本方法

14、进行翻译。 对于上述的问题,可以利用在C程序当中运用MATLAB引擎的方法动态调用MATLAB的库函数,基本上可以解决上述所有的函数不能被正确翻译和图形显示的问题。但是,运用MATLAB引擎的方法需要利用ActiveX的自动化服务器,在运行的时候程序会在后台执行一个MATLAB的线程而不能完全脱离 MATLAB的环境,也就意味着在纯C的环境下是不能运用的,必须要先安装MATLAB并能够在运行时支持多线程工作。具体的方法可以参阅参考文献3。 MATLAB 5.X和MATLAB 6.5的区别 对于本方法有以下几点区别需要注意: (1)程序当中所需的库文件由5.X版本的matrix.h、mcc.h、

15、matlab.h改为mex.h、libmatlb.h、libmatlbm.h等库文件。 (2)程序所需要加入的静态链接库文件由5.X需要的libmmfile.lib、libmatlb.lib、libmcc.lib、libmx.lib改为libmat.lib、libmatlb.lib、libmex.lib、libmx.lib四个文件。 (3)API函数改动很多,虽然数学函数库即mlf前缀的函数少有改动,但是关于变量建立,内存管理和数据类型转换的函数发生改变,即很多原mcc前缀的函数改为用mx为前缀的函数代替,使得很多5.X翻译的C程序代码不能在6.5相应的库下运行通过。 (4)6.5版本中直接增

16、加了在VC环境下对M文件的支持。在执行mbuild -setup的配置命令后,MATLAB在VC中提供了MATLAB Project Wizard,可在VC环境下直接建立MATLAB的工程来翻译M文件。但是这种翻译方法在遇到未定义函数嵌套时将错误的把函数名翻译为变量名,而mcc 命令将进一步翻译内部嵌套的函数。真的不掉线吗?、?小学部期末教学工作安排一、 期末考试1月30日(周六)补上甲流放假的课2月2日上午2月2日下午2月3日上午一、 二年级语文8:309:30三、 四年级语文8:309:50五、六年级语文8:3010:00三六年级科学10:2011:00一、二年级数学1:002:00三、四

17、年级数学1:002:20五、六年级数学1:002:30三四年级英语8:309:10五六年级英语8:309:20三至六年级品德与社会9:4010:201、一二年级英语考试在21周周五前(1月22日前)完成,并将考试成绩交班主任。2、所有学科平时成绩请在21周周五前填写完成。3、从21周周三兴趣小组停止上课,上语文数学课。4、复习期间,综合学科无论测试是否完成一律照常上课,除非语数学科需要考试临时占用。5、考试日期如有微调临时通知。二、学科俱乐部本学期最后两次为1月16日、1月23日。(一)上交材料1、每位执教老师上交本学期上课教案1份,教学计划1份,两者装订成册,封面格式如下余杭信达外国语学校学

18、科俱乐部教案 年级 俱乐部指导教师 2009学年第一学期2、数学还需上交本学期训练试卷一份。(以上材料上交时间:1月22日前)(二)展示要求1、本俱乐部期末总评一份(见附件)2、评比优秀学员,名额40%左右3、舞蹈:汇报演出(家长观摩);美术:作品集。余杭信达外国语学校 学科俱乐部期末总评学生姓名: 指导教师: 2010年1月1、本学期培训的具体内容、目标2、本学期优秀学员名单:真的不掉线吗?、? 本学期进步学员名单:3、学习水平评定:4、教师培训感受5、学生培训的感受(机动栏目) 6、家长对培训的评价(机动栏目) 家长签字: 本表由学生留底三、教学常规检查鉴于教学工作的实际情况,本学期依照信

19、达外国语学校年段学科教学质量标准要求对教学工作抽样检查相关内容。具体检查内容如下:1、 参加工作未满五年(含五年)的教师、本学期调入的教师需检查备课笔记。请相关教师将备课笔记在1月22日前发送到相应教研组长,并同时发送至教科中心:zjsxh1976163.,x年级x学科(xx老师)。2、 学生作业(每位教师上交一个教学班全体学生作业),在2月3日放假前将作业本放至教学楼一楼观摩教室内。学科年级检 查 内 容检查时间检查人语文一至二生字抄写本、语文课堂作业 2月4日上午,一楼观摩教室金 俭张丹三至六作文本(含周记、课堂作文)、同步练习、作业本数学一、二口算训练本;数学课堂作业本;新课堂同步训练陈

20、 虹三至六数学课堂作业本;新课堂同步训练英语一、二牛津配套练习钟 琼三至六抄写本(英语练习本);作业本真的不掉线吗?、?科学三至六课堂作业本(每个年级的一班的全部学生作业本)任忠华美术一至六美术作品档案袋(每位老师教研组长确定某一个年级的其中一个班)朱丽蓉音乐各年级教案电子稿体育各年级教案电子稿任忠华信息各年级教案电子稿备注:1、 各教研组长于2月4日上午对教学常规进行检查并记录。2、 开学初将安排一次教学常规检查情况反馈会议,由各教研组长对检查情况作出总结汇报; 如有建议请与沈兴华联系。 谢谢! 教学科研中心2010/01/11 真的不掉线吗?、?2009年春季期末八年级数学检测试题姓名 班

21、级 一、选择题(每小题3分,12小题,共36分)1.分式有意义,则x的取值范围是( )A. x3 B. x3 C. x3 D. x-32. 下列计算结果正确的是( )A. B. C. D. 3.已知,反比例函数的图像经过点M(k+2,1)和N(-2,),则这个反比例函数是( )A. B. C. D. 4. 如图,在同一直角坐标系中,正比例函数ykx+3与反比例函数y=的图象位置可能是( )5.一个三角形三边的长分别为15cm,20cm和25cm,则这个三角形最长边上的高为( )A.15cm B.20cm C.25cm D.12cm6. 如图,一棵大树在离地面9米高的B处断裂,树顶A落在离树底部

22、C的12米处,则大树数断裂之前的高度为( )A 9米 B 15米 C 21米 D 24米7. 如图,ABCD的对角线相交于点O,AB6cm,两条对角线长的和为24cm,则COD的周长为( )A 30cm B 24cm C 18cm D 15cm8. 已知等腰梯形ABCD中ADBC,BD平分ABC,BDDC,且梯形ABCD的周长为30cm,则AD=( )A 4cm B 5cm C 6cm D 7cm9.某公司销售部有营销人员25人,销售部为了制定某种商品的销售定额,统计了这25人某月的销售业绩如下表:某人销售量/件600500400350300200人数/人144673该公司营销人员该月销售量的

23、中位数是( )A.400B.350C.300D.36010.甲、乙两班举行跳绳比赛,参赛选手每分钟跳绳的次数经统计计算后填入下表:班级参加人数中位数方差平均次数甲351696.32155乙351714.54155某同学根据上表分析得出如下结论:甲、乙两班学生跳绳成绩的平均水平相同,乙班优秀的人数多于甲班优秀的人数(每分钟跳绳次数170为优秀),甲班的成绩的波动情况比乙班的成绩的波动大。上述结论正确的是( )A. B. C. D. 11. 如图,有一张直角三角形纸片,两直角边AC=6cm, BC=8cm,将ABC折叠,使点B与点A重合,折痕为DE,则CD等于( )A. B. C. D. 真的不掉

24、线吗?、?12.如图,边长一定的正方形ABCD,Q是CD上一动点,AQ交BD于点M,过M作MNAQ交BC于N点,作NPBD于点P,连接NQ,下列结论:AM=MN;MP=BD;BN+DQ=NQ;为定值。其中一定成立的是( )A.B.C.D.二、填空题(每小题3分,12小题,共36分)13.一组数据1,2,3,6,8,x的众数与中位数相等,那么x的值是 。14.纳米是长度单位,1纳米=10-9米,科学研究发现禽流感病毒的直径为120纳米,用科学记数法表示120纳米= 米.15.如图,ABCD中,AE,CF分别是BAD,BCD的角平分线,请添加一个条件 使四边形AECF为菱形。16.如图,矩形ABC

25、D的对角线BD过O点,BCx轴,且A(2,-1),则经过C点的反比例函数的解析式为 。三、解答题(72分)17.(6分)先化简,后求值:,其中x=318.解方程19. 某市清理生活垃圾,需把1000m3垃圾运走。(1)如果每天能运走垃圾x(m3),所需时间为y(天),试写出y与x的函数关系式;(2)若一辆垃圾车每天能运20 m3,则5辆这样的垃圾车要用多少天才能运完这些垃圾? 20. 如图,在中,是边上的一点,是的中点,过点作的平行线交的延长线于,且,连结(1)求证:是的中点;(2)如果,试判断四边形的形状,并证明你的结论21.某商场统计了每个营业员在某月的销售额,数据如下:(单位:万元)25

26、1821172215232220162418132022202120192414252321192820232124请根据以上信息完成下表:销售额(万元)1314151617181920212223242528频数(人数)1111解答下列问题:(1)上述数据中,众数是 万元,中位数是 万元,平均数是 万元。(2)设营业员的月销售额为x(单位:万元),商场规定:当x0),(x0)的图像及y轴的负半轴上是否依次存在一点B、C、D,使四边形ABCD为正方形,若存在请画出草图,证明并求出此正方形的边长,若不存在,请说明理由。 真的不掉线吗?、?禅学讲座南怀瑾听说过吗?躺在床上能和外教一对一练英语口语!

27、适合职场中的你!免费体验史上最牛英语口语学习,太平洋英语南怀瑾先生民国62年讲述 林中治记录 二祖晚年行迹 上一次研究过达摩祖师传法于二祖的经过,现在继续研究二祖晚年的几个问题。 “祖乃往邺都化导,四众皈依,三十四载,遂韬光混迹,变易仪相,或入酒肆,或过屠门,或习街谈,或随廝役,或问之曰:师是道人,何故如是?祖曰:我自调心,何关汝事?!”(指月录卷四) 二祖接受初祖的教导与指点,得法以后,成为中国禅宗的第二代祖师。能被称为一代宗师,在人们的心目中,仅“次于佛”的地位。可是,二祖晚年的形迹,却给我们留下许多疑问。一般人研究禅宗,几乎都忽略了这些问题。 原来二祖得法以后,在洛阳一带,宏法利生,接受

28、四众的皈依,过了三十四年,传法于三祖后,就“韬光混迹”,不大注意穿着与仪表,经常出入茶楼酒馆,或与屠夫们交往,有真的不掉线吗?、?时候在大街小巷与人交谈阔论,有时候又与一般劳役工人打交道。大家看到他这些奇奇怪怪的行为,就问他:师是修道的人,应该遵守一切宗教戒律才是,为什么变成这样呢?二祖回答说:我自己在做“调心”的功夫,要你们来多管闲事干嘛?! 我们看了以上记载,不禁要发出疑问:二祖年轻的时候,为着求道,不但精通了世间的一切学问,最后还赔上了一条膀子,他求道的精神,是那么精勤诚恳。到了晚年,反而到世间被人认为最卑陋下层的地方,这又为着什么呢?就算如他自己所说,是为了“调心”。但他在见初祖的时候

29、,初祖问他要什么,他说此心不安。初祖要他拿出心来,他回光返照了很久,结果觅心了不可得,达摩祖师说:与你安心竟。那个时候对“心”的安与不安,已经有了深刻的领悟与体认,结果到了晚年,还要再做“调心”的功夫。现在们们要提出问题:二祖在初祖那里要安的是什么“心”? 上面这些问题,我不给大家做答案。禅宗的教育法,注重启发式,这些问题,请大家自己去找答案。 为法捐躯 达摩祖师最后被人毒害,而二祖到了晚年,则被人加害,经真的不掉线吗?、?过情形请再看下面这一段记载。 “后到筦城县匡救寺说法,有辨和法师,正于其寺讲涅槃经,其徒多去之而从祖。和愤嫉兴谤于邑宰翟仲侃,侃加祖以非法。祖怡然委顺,识真者谓之偿债,时年

30、一百七矣。隋文帝开皇十三年癸丑三月十六也。” 二祖在一百岁左右,还舍不得救度众生的工作。可是由于宗教派别的互相嫉妒,在筦城县匡救说法的时候,不容于辨和法师。 一般法师说法,多凭文字解释经义,无法直探心源。这种法师称为义学沙门。他们对于经典的义理,分析得很透彻,可是没有实证工夫。因此,辨和法师的信徒们,对于他所讲的涅槃经多无兴趣,纷纷信从二祖。辨和法师在愤嫉之下,在地方官翟仲侃面前进二祖的谗言,因此翟仲侃就逮捕二祖张罗罪名处刑。二祖不反抗也不声辩,怡然顺受。那些对真理有体验的人,都说这是偿还宿债。这种看法,我认为还是消极的一面;他积极的意义,应该是为了维护正法,虽然遭受危难,亦不逃避,也就是佛法

31、所谓“宁可将身下地狱,不将佛法做人情”。不管任何人,对于佛法的最高理趣,对就是对,不对就是不对,纵然牺牲生命,亦在所不惜。没有这种精神,佛法怎能维持到现在呢?! 真的不掉线吗?、?禅宗的忏罪法门 二祖传法给三祖,却没有初祖对他那么严厉。(指月录卷四) “祖遂造少室,逮得法,至北齐天平二年,有一居士,年逾四十不言名氏,聿来设礼而问曰:弟子身经风恙,请和尚忏罪。祖曰:将罪来与汝忏。士良久曰:觅罪了不可得。祖曰:与汝忏罪竟,宜依佛法僧住。士曰:今见和尚,已知是僧,未审何名佛法?祖曰:是心是佛,是心是法,法佛无二,僧宝亦然。士曰:今日始知罪性,不在内,不在外,不在中间,如其心然,佛法无二也。祖深器之,

32、即为剃发。曰:是吾宝也,宜名僧璨。” 二祖向初祖求“安心”,而三祖向二祖是求“安身”。 依佛法来讲,身体上的病,是由“业力”所生。业通三世因果,所以有先天的五官不全,身体的残疾与怪病等。“业”由“心”造,而身没有离开心,因此,心物是一体的两面,也就是心物一元。可是,佛法特重于心,以心为根本,心转,物亦随之转。如要治身,不如治心。三祖在悟到罪性无自性以后,一切病症,都渐渐的痊愈了。 三祖要二祖忏罪时,他体会良久,悟到罪性如幻,跟心一样,不在内,不在外,不在中间。这是般若(智慧)的观照。学真的不掉线吗?、?佛学禅,讲究的是智慧的解脱,所以才有唯“智”能度的说法。 三祖在觅罪了不可得的当下,二祖就顺

33、着三祖的心意说,为你忏好罪了。在此,我们必须注意一点,一切罪业,一切因果虽然如幻,但在幻化过程当中,使我们有真实的感受,既然有真实的感受,我们怎么可以不怕呢?!如果在证到罪性“空”的时候,应该要乘悟并销,所谓“随缘消旧业,不再造新殃”。如果只是在意识上认为罪性是“空无”的,而随随便便,马马虎虎,认为就是“禅”,一切不在乎,认为就是“解脱”,这绝对不是“禅”的道理。 佛、法、僧,在现象的作用上说,分为三个,故称三宝。二祖要三祖宜依“佛、法、僧住”的时候,三祖说:我现在见到你,知道僧,但不知道什么是佛?什么是法?二祖说:心就是佛,心就是法,佛、法合起来,就是僧。三祖顿悟入“一心三宝”。二祖非常器重

34、他,就与他剃度,是为三祖,并赐名僧璨。 见微知著 三祖来见二祖的时候,是一位在家人(居士),并不讲出他的姓名与来历。从这一点,去探索自初祖至于二、三祖之间,真的不掉线吗?、?当时社会的形态,变乱太大,再配合上当时政治、经济、军事、文化、学术等,就可以找出一条“文化发展史”的正确方向。而一般研究中国文化发展史,往往只走独条道路,并不配合这些因素来研究。 当时的佛学,偏重于“义理”的阐述,因此造成很多佛学的学阀,自以为是。达摩祖师来了以后,提倡脱掉学术的外衣,直指“心性”,做实证的工夫,这在当时,犯了很大的忌讳。初祖被毒,二祖被害,皆种因于此。后来三祖四祖,为了避国难或教难,干脆就把真实姓名隐去了

35、。我们要研究中国文化发展史,关于这上点,应该加以注意。 李长者的奇遇 由于三祖隐姓埋名,使我想起一个故事。 唐代有一位注华严经的李长者,只知他是唐代宗室,或是一位世子。唐代在高宗以后,政治非常纷乱,尤其武则天杀害李氏后裔,使李家后代,大都逃亡流落于他方。华严经是佛学里头一部大经典,共有八十卷。有人说:不读华严,不知佛家之富贵。李长者因为不见容于当时的政治与社会,所以就发心修道。他想注解华严经,便背著一部华严经及笔墨用具,往深山里去。在山中转了很久,都找不真的不掉线吗?、?到适当的地方。只见一只白额吊睛大虫,从山前面一跃跳到他的身边,匍匐在地,像一只狗见到主人一样,竖著尾巴直摇。他看到这种情形,

36、晓得是神迹出现,就上前拍拍老虎的头说:我发心注解华严经,请你帮我忙找一个适当的地方好吗?说著就骑上虎背,考虑驮着他跑过好几个山头,最后找到一个山洞,他就不在此洞中作注解的工作。据说,他由于太专心的缘故,把时间都忘记了,到了晚上,洞中就放光,因此他可以不分昼夜的工作。而吃饭的时候,有两位天女为他送饭,并且随时补充必需的用品。 这些奇异的事情,听起来好像很迷信,然而也是很真实的。李长者注完了华严经,把稿子留下,人便不知所终了。这一部华严经注解,影响后代研究华严经的思想很大。李长者这种作风,说明了两点:第一:是受隐士思想的影响,第二:是回避政治上的恩怨。而三祖的情形,可能与李长者同出一辙。 楞伽经与

37、禅宗心印 在要正式讲“禅”以前,有一样东西,必须重复提出讨论的。 达摩祖师传了禅以后,临走交给二祖一部经典楞伽经,嘱咐后世,学禅做工夫,应以楞伽经为蓝本,也真的不掉线吗?、?就是以楞伽经“印心”。文学上所描写的“心心相印”的典故就出于此。所谓“印心”的印,是对证、契合的的意思。印用印油在、纸上盖了模子印鉴,原来的印虽然拿走了,而留下来的印鉴,与原来的印子绝对没有两样。好像照在水中的月影子第二月,与天上的月彼此符合,这就叫做“以心印心”。 楞伽经在佛学内,不但是禅宗重要的经典,同时也是唯识宗法相宗的主要经典。为什么称为楞伽经呢?楞伽是南印度锡兰岛的一座山名,佛在此与弟子们说了这一部经典。 楞伽经

38、的内容在指月录卷一诸师拈颂诸经语句中有一段记载: “楞伽经:五法、三自性,八识、二无我。” 现在西方的心理学,对心的分析太笼统,充其量只了解到佛学所讲第六识的阴面“下意识”,再下去就茫然无知了。 全部佛学所讨论的,就是一个“心”。小乘的佛学,只讲到第六识,而大乘佛学,才讲到与宇宙相合一的第七识、第八识。我们要了解第七识、第八识,在学理上不能不研究唯识学。而唯识包括六经十一论,楞伽经就是其中之一。 学禅,目的在“明心见性”,而对“心”分析最清楚最彻底的是唯识。所以,学禅一定要懂得唯识。现在无论东西方所真的不掉线吗?、?流行的禅,往往只拿禅宗里面一些公案的风光,例如“见山不是山,见水不是水。”或搞

39、文学境界,如“天地一沙鸥”等,以为就是“禅”,未免太偏。现在我们要讲禅,一定要从我们自己文化本身的基础上,去探讨禅的究竟。 五法:名、相、分别、正智、如如。 什么是“名”?名分实际的名与抽象的名。实际的名,就是:茶杯、粉笔、太阳、月亮、虚空等等。抽象的名,例如真理、道义等等。真理与道义,虽然是抽象的名词,但并不是空洞虚无的,它代表了一种精神的境界。由这里我们就了解“五法”所讲的名,并不是某人在电视上出现,或者在报纸上有了新闻的名气之名。 有名就有相。世界上万事万物,无论物质的或精神的,都有它的名相。 名相从那里来?从意识心分别来的。好比学静坐的人,如果要问:我这样境界,是空呢?还是不空?在禅宗

40、一定答复你,不要起分别心哪!本来坐得蛮好,被这些空呀不空呀等名相起了分别心。分别心还在波动,并没有止息下来,你自己想想看,是空还是不空呢? 我们所感觉到的舒服不舒服,好看不好看,长与短,高与矮,道德的标准,是非的观念,善恶的分野,以及佛学本身的三藏十二部经典,一切宗教、科学、哲学、人文文化等等,皆真的不掉线吗?、?是分别心所起的名相而已。 众生天生的根性,喜欢“循名执相”。一切烦恼痛苦的观念,都是从分别心起来。分别心就是“识”。 分别心不起,就是“正智”。正智,也就是“金刚般若波罗蜜多”的般若。 一切众生,喜欢循“名”执“相”,“分别”一切,去了分别心,就是“正智”现前,正智就是佛的境界,所以

41、佛称“如”来。 以上就是五法。 不要死在句下 有些人,学了佛,学了禅以后,懂得“空”的名相,就一天到晚在那边搞空呀空的。有些静坐未入流的人,偶而瞎猫撞到死老鼠,觉得一片空灵,便跑来对我说,这几天达到空的境界,真是好。“空”固然是一片境界,而空的观念却是由分别心所起。因此,真正学佛学道的人,能够把学佛学道的名相推开了,那才算真正的解脱与自在。上面所讲一时撞到的空灵境界,那是工夫来找你,并不是你自己随时随地都有这种工夫,所以不究竟,不能自己做主,还要继续努力。 在学佛的过程中,自然要从许多名相中,去探讨其中的道理,真的不掉线吗?、?等到彻悟的时候,就要“乘悟并销”不被名相所困,完全恢复到“正智”的

42、境界,才算是成佛。 可爱的老虎 再说楞伽经中的三自性:依他起性,遍计所执性,圆成实性。我们一个人,刚生下来,像一张白纸,虽然有一个“根本”,可是在此世尚未受到染污。慢慢的,由于父母的遗传发生作用,加上家庭的教育、学校的教育,以及人文文化、科学、哲学等思想的薰陶,逐渐形成了自己的观念与知识。这些观念与知识,都是依他而有的,“他”并不是自己,因此,这一种心理作用与状态,在唯识学上称为“依他起性”。依他起性,也就是后天生命活动的全部。 为着使大家对“依他起性”有进一步的了解,在此借用一个笑话来说明: 有一位老和尚,收养了一位小徒弟,十几年来,都不让他下山。有一天,为着要测验他的修行工夫如何,想带他到城市里去走走。临下山时,老和尚对徒弟说,城市里什么都可以看,就是不要去看“老虎”。徒弟问城市里的“老虎”怎么个样子,会有那么可怕?老和尚说:城市里的“老虎”,头发长长的,穿着花花绿绿的衣服,脸上还涂得一块红一块白,真的不掉线吗?、?讲起话来,手指指点点的,有时候还会张开大嘴巴,对你笑呢,这种老虎心里头没有好念头,你千万不要

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服