原标题:" Julia的Kronecker产品"
假设:
p = 0.7;
PI = [p 1-p;1-p p];
和
Q = zeros(20,20);
在Matlab中我们可以运行:
A=kron(PI(j,:),Q)
在朱莉娅的时候:
A=kron[PI[j,:],Q]
这会导致以下错误:
MethodError: no method matching getindex(::Base.#kron, ::Array{Float64,1}, ::Array{Float64,2})
如何解决此问题并获得类似于Matlab的结果?
答案 0 :(得分:4)
Matlab中您的行中有()
的两种用法:
A=kron(PI(j,:),Q)
outer()包围传递给kron
函数的参数,而inner()提供PI的索引。在Julia(和Python,C和许多语言)中,我们使用不同的符号来实现这两个不同的目的。
在Julia中,我们使用方括号[
和]
进行索引,(
和)
围绕函数参数。
所以:
julia> kron(PI[1, :], Q)
40×20 Array{Float64,2}:
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 … 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
[etc.]