Мата функция проблемы - PullRequest
       6

Мата функция проблемы

0 голосов
/ 19 октября 2018

Я новичок в Mata и пытаюсь научиться работать с функциями.

Мой код следующий:

mata:
function foo()
{
        Y = X'
}
end

input x1 y1 z1  
223 676 457 787
913 743 346 890
546 876 123 105
end

putmata X=(x1 y1 z1)
mata: Y=foo()
getmata (x2 y2 z2)=Y

Может кто-нибудь сказать мне, почему это не работает

1 Ответ

0 голосов
/ 19 октября 2018

В вашем коде есть две проблемы:

  1. Функция foo не имеет аргумента для подачи ей X.
  2. Транспонированный X уничтожается послевызывается функция.

Вам необходимо изменить функцию следующим образом:

mata:
function foo(a)
{
    return(a')
}
end

Затем вы можете получить транспонированные X в качестве переменных, используя getmata:

clear 

input x1 y1 z1  
223 676 457 787
913 743 346 890
546 876 123 105
end

putmata X = (x1 y1 z1)
mata: Y = foo(X)
getmata (x2 y2 z2) = Y

list

     +-----------------------------------+
     |  x1    y1    z1    x2    y2    z2 |
     |-----------------------------------|
  1. | 223   676   457   223   913   546 |
  2. | 913   743   346   676   743   876 |
  3. | 546   876   123   457   346   123 |
     +-----------------------------------+
...