SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 1270|回复: 4
打印 上一主题 下一主题

哪位大侠能概述一下sas\IML的特点、功能及使用方法?

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2004-3-18 10:28:59 | 只看该作者

哪位大侠能概述一下sas\IML的特点、功能及使用方法?

<!-- s:o --><img src="{SMILIES_PATH}/icon_surprised.gif" alt=":o" title="Surprised" /><!-- s:o --> 哪位大侠能概述一下sas\iml的特点、功能及使用方法? <!-- s:o --><img src="{SMILIES_PATH}/icon_surprised.gif" alt=":o" title="Surprised" /><!-- s:o -->
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2004-3-18 18:39:41 | 只看该作者

about sas/iml

读研时曾用过proc iml 做矩阵的计算,不过现在忘的差不多了,建议你看看
SAS help里的相关部分
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2004-3-18 23:30:20 | 只看该作者
IML represents for Interactive Matrix Language, which can be used for matrix computations.  Quite often, it is used for user-defined numerical computations.  But, as people know, SAS itself is not designed for algorithm development, so the usage of IML is limited.  People interested in algorithm development may use MATLAB instead of SAS/IML. SAS/IML will provide a convenience for people who would like to embed a small part of user-defined numerical computation to their large scale SAS works.
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2004-3-19 07:52:17 | 只看该作者

SAS/IML矩阵功能简介

SAS/IML矩阵功能简介

SAS/IML是SAS提供的一个可以进行矩阵运算编程的工具,详细使用请参见系统帮助。

它可以用来进行交互的矩阵运算,也可以编好一个程序再一起运行。程序可以使用分支、循环、模块化子程序等控制结构。数据步中的函数大都能在SAS/IML中使用,SAS/IML 也提供了一些特有的函数。SAS/IML的一个方便之处是它可以直接读取SAS的数据集并把结果写成SAS数据集,它也有存取外部文件的功能。

要交互运行SAS/IML,只要在程序窗口输入
proc iml; reset print;

提交此程序,就可以进入交互的SAS/IML运算状态。退出用QUIT语句。SAS/IML中可以使用标量、行向量、列变量和矩阵,可以使用字符型数据。变量取名规则遵循SAS语言的统一规定,变量可以存储标量、向量和矩阵。

赋值用等号。
例如:
sc = 15.25;
vh = {1 2};
vh1=5:9;
vv = {3, 4};
mat1 = {1 2 3, 4 5 6};
mat2 = {"Li" "Ming", "Zhang" "Chong"};

赋值语句是一个SAS语句,它以分号结尾。上面定义了标量sc,行向量vh和vh1,列向量vv,两行两列的矩阵mat1,字符型矩阵mat2。

写矩阵常量时,行的元素之间以空格分隔,行之间以逗号分割。可以用“开始:结尾”的写法生成一个等差数列行向量。

矩阵之间可以用&lt;、=等符号进行元素两两间的比较。要得到一个标量的结果,可以用ALL()函数表示自变量的各元素均为真(非零),用ANY()函数表示自变量的元素中至少一个为真。可以用&amp;、|、^连接两个逻辑型矩阵(元素间的与、或、非)。 用||表示矩阵左右连接,用//表示矩阵上下连接。x`表示x的转置。

SAS/IML中可以进行通常的矩阵加减乘(+、-、*)运算,也可以进行对应元素之间的乘除(#、/)运算。
矩阵加减必须两个矩阵大小完全相等,或者其中一个是标量。
矩阵乘法要求第一矩阵的列数等于第二矩阵的行数,或其中一个是标量。
矩阵元素之间的乘除运算是对应元素进行乘除,当两个矩阵大小完全相同时可以进行运算,其中有一个是标量时可以进行运算,
另外,如果其中有一个是行(列)向量而其长度与另一个矩阵的列数(行数)相同也可以进行运算。矩阵逆要用INV()函数运算。

为了读入一个数据集,先打开数据集,如 USE sasuser.c9501;
然后用READ ALL VAR{ 变量列表}的格式读入数据集的各变量值,
例如: READ ALL VAR {name math chinese}; print name math chinese;
这时三个变量都可以作为列向量来使用。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2004-3-19 21:09:24 | 只看该作者

谢谢老大!

谢谢老大为小弟指点!感谢!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2025-1-8 15:51 , Processed in 0.108770 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表