You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mathematica中同名不同维度矩阵的读取与重存问题及解决

Mathematica批量重赋值矩阵的维度不匹配问题解决

场景说明

主程序完成大型计算后,通过Put[...]和Save[...]将结果保存为类文本文件,其中包含多个大维度矩阵,示例如下:

tab1 = {{1, 2, 3, 4, 5, 6}, {2, 4, 6, 8, 10, 12}, {3, 6, 9, 12, 15, 18}, {4, 8, 12, 16, 20, 24}}
tab10 = {{10, 20, 30, 40, 50, 60}, {20, 40, 60, 80, 100, 120}, {30, 60, 90, 120, 150, 180}, {40, 80, 120, 160, 200, 240}}

后处理阶段,使用Get[savefile]读取文件,生成这些矩阵的降分辨率版本:

smalltab1 = tab1[[Range[1, 4, 2], Range[1, 6, 2]]]
(* 输出:{{1,3,5},{3,9,15}} *)
smalltab10 = tab10[[Range[1, 4, 2], Range[1, 6, 2]]]
(* 输出:{{10,30,50},{30,90,150}} *)

最终需要将降分辨率后的小矩阵重赋值给原变量名(例如tab1 = smalltab1),再通过Save[newsavefile,{tab1,tab10,...}]保存新文件。

批量处理的问题

由于源文件中矩阵数量和名称不确定,先提取矩阵名列表tabs={"tab1","tab10",...},通过For循环结合With批量生成降分辨率矩阵,此步骤运行正常:

For[t = 1, t <= Length[tabs], t++, 
    With[{lhs = Symbol["small" <> tabs[[t]]]}, lhs = Symbol[tabs[[t]]][[Range[1, 4, 2], Range[1, 6, 2]]]; 
];

但执行批量重赋值时:

With[
  {lhs = Symbol[tabs[[i]]], rhs = Symbol["small" <> tabs[[i]]]}, 
  lhs = rhs
  ];

触发维度不匹配错误:

"Set::shape : Lists {...} and {...} are not of the same shape"

尝试使用ClearAll、Remove等命令,因变量局部性问题无法解决该错误。

有效解决方法

在批量重赋值之前,添加Clear @@ tabs语句清除所有原始矩阵变量,即可解决维度不匹配问题。完整可运行示例如下:

tab1 = {{1, 2, 3, 4, 5, 6}, {2, 4, 6, 8, 10, 12}, {3, 6, 9, 12, 15, 
    18}, {4, 8, 12, 16, 20, 24}};
tab10 = {{10, 20, 30, 40, 50, 60}, {20, 40, 60, 80, 100, 120}, {30, 
    60, 90, 120, 150, 180}, {40, 80, 120, 160, 200, 240}};
(* 从外部文件读取,矩阵数量和名称未知,遵循tab#命名规则 *)

tabs = {"tab1", "tab10"};
(* 从外部文件自动提取生成的矩阵名列表 *)
ltabs = Length[tabs];

(* 批量生成降分辨率矩阵,运行正常 *)
For[t = 1, t <= ltabs, t++,
  With[
    {lhs = Symbol["small" <> tabs[[t]]]}, 
    lhs = Symbol[tabs[[t]]][[Range[1, 4, 2], Range[1, 6, 2]]];
    ];
  ];

Clear @@ tabs (* *此语句是解决问题的关键*,清除所有原始矩阵变量 *)

(* 批量重赋值,问题解决 *)
For[t = 1, t <= ltabs, t++,
  With[
    {lhs = Symbol[tabs[[t]]], rhs = Symbol["small" <> tabs[[t]]]},
    lhs = rhs
    ];
  ];

执行后tab1输出为{{1, 3, 5}, {3, 9, 15}},符合预期。

内容的提问来源于stack exchange,提问作者Leela Michaels

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 14:05:56