Julia 中的维度不匹配

The*_*a G 4 dimension multidimensional-array julia julia-studio julia-jump

我创建了一个矩阵 A,它是 300x4 数组。在目标中,我应该最小化 A*x,其中 x 是一个 1x4 向量。我的代码如下:

k = 3
m = length(u) 
n = k + 1
A = zeros(m,k+1)
for i = 1:m
    for j = 1:k+1
        A[i,j] = u[i]^(k+1-j)
    end
end
display(A)
using JuMP,Gurobi
m = Model(Gurobi.Optimizer)
@variable(m, x[1:k+1])
@objective(m, Min, sum((y - (A*x).^2) ))
optimize!(m)
uopt = value.(x)
println(x)
Run Code Online (Sandbox Code Playgroud)

输出:

DimensionMismatch("dimensions must match")
Stacktrace:
 [1] promote_shape at .\indices.jl:154 [inlined]
 [2] promote_shape at .\indices.jl:145 [inlined]
 [3] -(::Array{Int64,1}, ::Array{GenericQuadExpr{Float64,VariableRef},1}) at .\arraymath.jl:38
\]
Run Code Online (Sandbox Code Playgroud)

ran*_*min 5

如果dim(A) = 300x4,并且dim(x) = 1x4(从您的问题中提取的维度),则A*x(如“矩阵乘法的乘积”)未定义为维度不匹配。请注意,如果您将 x 更改为 4x1 的尺寸,它会起作用,并且结果将具有 300x1 的尺寸。

如果这不能解决您的问题,请在您的代码中找到第 154 行(也可能是第 145 行),因为这些行中发生尺寸不匹配,并检查该行中的代码是否合理。

我实际上并没有验证你的代码(而且它似乎不是完整的代码,也是?),我知道有更多有能力的人可以帮助你。无论如何,我希望这会有所帮助。

快乐编码。