在Julia中使用setindex!赋值时遇维度不匹配问题求助
解决Julia中
setindex!的维度不匹配问题 你遇到的维度不匹配错误,是因为错误地将db用[db]包裹,导致传入了一个仅包含1个向量元素的数组,而basic_col_indices指定了2个目标位置,二者元素数量不匹配。
修正方案
直接传入db本身即可(它已经是2元素向量,和目标索引数量完全对应),同时补充原代码中缺失的B定义(从逻辑推断B是A的basic_col_indices列构成的矩阵):
n=4 A = [ 1.0 2.0 1.0 0.0; 2.0 1.0 0.0 1.0] basic_col_indices = [1, 2] # 补充定义B:取A的指定列构成基矩阵 B = A[:, basic_col_indices] db = -1 * inv(B) * A[:, 3] z = zeros(n) # 直接传入db,无需额外包裹 setindex!(z, db, basic_col_indices);
运行后z的结果为:
4-element Vector{Float64}: 0.3333333333333333 -0.6666666666666666 0.0 0.0
更简洁的写法
Julia支持直接通过索引赋值,效果和setindex!完全一致,更符合惯用语法:
z[basic_col_indices] = db
内容的提问来源于stack exchange,提问作者Eric Taylor
相关产品推荐
相关产品推荐

