Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fortran到SAS代码转换_Fortran_Sas - Fatal编程技术网

Fortran到SAS代码转换

Fortran到SAS代码转换,fortran,sas,Fortran,Sas,我想在proc iml中创建1、2、3维变量/数组。我的代码如下所示: proc iml; start Mean1(x); /*this is 1 dimension variable/array*/ Mean1(x)=sum(x)/dim(x); finish; proc iml; start Mean2(x); /*this is 2 dimension variable/array*/ Mean1(x)=sum(x)/dim(x); finish; pr

我想在proc iml中创建1、2、3维变量/数组。我的代码如下所示:

proc iml;
start Mean1(x);         /*this is 1 dimension variable/array*/
Mean1(x)=sum(x)/dim(x);
finish;

proc iml;
start Mean2(x);         /*this is 2 dimension variable/array*/
Mean1(x)=sum(x)/dim(x);
finish;

proc iml;
start Mean3(x);         /*this is 3 dimension variable/array*/
Mean1(x)=sum(x)/dim(x);
finish;
我试着这样做:

proc iml;
declare double x[dim(n),dim(n)];
start Mean2(x);         /*this is 2 dimension variable or array*/
Mean1(x)=sum(x)/dim(a, x);
finish;

但它不起作用。你能帮我吗?

这里有几件事要知道

  • SAS IML数组是1索引C样式的行主数组。非列 我喜欢Fortran
  • 据我所知,IML中没有三维数组。总是可能的,我错了
  • SAS中的所有数字都是双精度的
  • IML有很好的归约运算符,这使方法变得简单 而且非常快
  • 要声明矩阵/数组,请使用J(nrow,ncol,fill)函数:

    proc iml;
    x = J(10,5,1); /*Declare a 10x5 matrix filled with 1s*/
    x = normal(x);  /*Fills matrix X with random numbers, uses the values in X as the seed*/
    
    mean_all = x[:]; /*mean over all values in x*/
    mean_col = x[:,];/*mean of each column */
    mean_row = x[,:];/*mean of each row */
    
    print mean_all;
    print mean_col;
    print mean_row;
    
    quit;
    

    我强烈建议您阅读IML文档

    您是将IML Studio与IML+语言或基本过程IML一起使用?您使用的是哪个版本的SAS?我不是IML专家,但我同意-通常没有一种方法可以直接处理3+维数组/矩阵。详细介绍了如何使用
    levels
    向量来实现这一点,但我不确定将其转换为您在这里所做的事情有多容易。