在 Julia 中,从矩阵访问的值无法用作函数中的参数

Mar*_*ang 3 julia

首先,我有一个叫做渗透性的函数。

# permeabiliy function
# L is short for the Lable  
mu_0 = 4 * pi * 10^(-7);
mu_r_core = 50;
mu_r_air = 1;
L = Int16; 
function permeability(L)
    if L in 1:4
        if L !== 3 
            return mu = mu_r_air * mu_0
        else
            return mu = mu_r_core * mu_0
        end
    else
        println("null") #print output in a new line
    end
end
Run Code Online (Sandbox Code Playgroud)

然后,我有一个名为domain的矩阵,如下所示,

 domain
 2392-element Array{Int16,1}:
 1
 1
 3
 1
...
Run Code Online (Sandbox Code Playgroud)

当我调用渗透性(域[3])时,输出是,

L = domain[3]
permeability(L)
Run Code Online (Sandbox Code Playgroud)

输出是

1.2566370614359177e-6
Run Code Online (Sandbox Code Playgroud)

然而,当我简单地调用渗透率(3)时,

permeability(3)
Run Code Online (Sandbox Code Playgroud)

输出是

6.283185307179588e-5
Run Code Online (Sandbox Code Playgroud)

因此,似乎从矩阵传递的值只是“1”,但在这种情况下,域 [3] 应该是 3,并且在这两种情况下结果应该相同。

有人可以告诉我我错在哪里吗?

Osc*_*ith 6

问题是你的数组存储Int16while3是一个Int64. L!==3要求L3ie 的类型相同Int64。你想要的L!=3。您的困惑可能来自这样一个事实,!===while!==的倒数是===