用数组中的符号替换数值

Replace numeric values with symbols in an array

我面临的问题如下:我得到了一个 6x1 数组,其中包含代表 2 个未知值的 2 个 NaN。我想要做的是用符号值替换这些值(例如 x_1 和 x_2)。我不明白该怎么做的是,如果我得到一个 12x1 数组,例如 10 NaN,我必须将其更改为 X_1、X_2...X_10以便之后使用求解器。

array = [0; 0; NaN; 0; 0; 0; 0; NaN; 0];

变为:

array = [0; 0; x_1; 0; 0; 0; 0; x_2; 0];

但它必须是具有不同 NaN 的数组的通用解决方案。

非常感谢您的帮助和时间。

您可以使用sym函数:

array=sym(array);
array(isnan(array))=sym('x_',[sum(isnan(array)),1])

解释: 第一行将数组转换为符号数组。第二个用 sym 函数创建的数字索引符号变量替换 Nan 元素。