2017-12-29 63 views
0

']'근처 예기치 기호 (내 테스트 파일 test.lua라는) :는 SciLua 다음 <a href="http://scilua.org/index.html" rel="nofollow noreferrer">SciLua</a> 페이지에서 다음 예제를 실행

test.lua:13: unexpected symbol near ']'

대부분의 다른 :

-- No global key is set: 
local alg = require "sci.alg" -- Load sci.alg module. 
local dist = require "sci.dist" -- Load sci.dist module. 


local function randmatstat(t) 
    local n = 5 
    local v, w = alg.vec(t), alg.vec(t) 
    for i=1,t do 
     local a, b, c, d = randn(n, n), randn(n, n), randn(n, n), randn(n, n) 
     local P = alg.join(a..b..c..d) 
     local Q = alg.join(a..b, c..d) 
     v[i] = alg.trace((P[]`**P[])^^4) -- Matrix transpose, product and power. 
     w[i] = alg.trace((Q[]`**Q[])^^4) -- Matrix transpose, product and power. 
    end 
    return sqrt(stat.var(v))/stat.mean(v), sqrt(stat.var(w))/stat.mean(w) 
end 

내가 오류가 계속 모듈은 정상적으로 작동하지만 행렬을 사용할 때만 문제가 발생합니다. 도와 주셔서 감사합니다.

업데이트

: @stepelu으로 도움이 대답

, 나는 그에게 매우 감사 해요, 다음과 같은 완전한 예는 지금 잘 작동 : 예상 출력

local alg  = require 'sci.alg' 
local prng = require 'sci.prng' 
local stat = require 'sci.stat' 
local dist = require 'sci.dist' 

local min, sqrt, random, abs = math.min, math.sqrt, math.random, math.abs 
local rng = prng.std() 
local vec, mat, join = alg.vec, alg.mat, alg.join 

local function randn(r, c) 
    local x = mat(r, c) 
    for i=1,#x do 
     x[i] = dist.normal(0, 1):sample(rng) 
    end 
    return x 
end 

local function randmatstat(t) 
    local n = 5 
    local v, w = alg.vec(t), alg.vec(t) 
    for i=1,t do 
     local a, b, c, d = randn(n, n), randn(n, n), randn(n, n), randn(n, n) 
     local P = alg.join(a..b..c..d) 
     local Q = alg.join(a..b, c..d) 
     v[i] = alg.trace((P[]`**P[])^^4) -- Matrix transpose, product and power. 
     w[i] = alg.trace((Q[]`**Q[])^^4) -- Matrix transpose, product and power. 
    end 
    return sqrt(stat.var(v))/stat.mean(v), sqrt(stat.var(w))/stat.mean(w) 
end 

print(randmatstat(1000)) 

:

0.75865001347735 0.74932678346271 
[Finished in 0.2s] 
+2

백틱을 좋아하지 않아 냄새가 난다. –

+0

나는 downvote를 본다. 그러나 이것은 루아를 배우는 나의 하루이다, 나는 바보 같은 짓을하고 있을지 모른다. downvoter는 나에게 힌트를 그 대신에주고, 더 긍정 일 수 있었느냐? – AboAmmar

+0

@MarcinOrlowski - 백틱은 페이지가 말한 것처럼 매트릭스 전치를위한 것입니다. – AboAmmar

답변

1

SciLua의 저자입니다.

SciLua 언어 확장을 사용하려면 패키지에 추가로 sci-lang 패키지를 설치해야합니다.

scilua.org (선호 접근법)에 표시된 것처럼 ULua 배포판의 일부로 SciLua를 설치 한 경우 lua 대신 scilua 실행 파일을 통해 스크립트를 실행하면 충분합니다.

그렇지 않은 경우 기존 LuaJIT 설치 상단에 scisci-lag의 수동 설치를 선택한 경우 다음이 적용됩니다. 패키지에는 __bin 폴더가 있으며 upkg를 통해 (ULua에서) 설치하면 각 OS의 실행 가능 스크립트가이 폴더에 포함 된 lua 파일에서 자동으로 만들어집니다. 수동 설치를 선택한 경우 사용자가 실행 가능한 스크립트를 직접 작성해야합니다 (Linux의 경우 실행 권한이있는 scilua이라는 파일에 __bin/scilua.lua + bash shebang의 내용 포함).

+0

[ulua 페이지] (http://ulua.io/) 명령으로 오해했습니다. # # Windows의 경우 : cd folder_containing_ulua/ulua lua [options] [script [args]]'. 이제는 모든 것이 잘 작동합니다. 나는 너에게 감사한다, 나는 내가 많이 좋아했던 시실리아의 전체적인 생각을 포기하려고했다. – AboAmmar