用数组中的符号代替数字值
问题描述:
我面临的问题如下:我已经给出了一个包含2个NaN的6x1数组,代表2个未知值。我想要做的是用符号值替换这些值(例如,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
元素。
+0
这正是我正在寻找的。非常感谢您的时间。 –
您不能拥有包含数字和符号变量的标准数组。所有条目必须具有相同的数据类型。您可以使用单元格数组来让每个单元格包含不同的类型。但是这看起来很奇怪。你确定你需要混合数字和符号内容吗? –
Im给出了一个代表变量的NaN数组,但是由于我正在编程一个求解器,因此提供的数据可能有2,3,4个NaN是N个变量。所以简而言之,我想找到第一个NaN被x_1替代,第二个由x_2替换...然后有一个带有0和变量的数组来运行求解器。谢谢你的时间。 –
所以你需要一个_symbolic_数组?如果是这样的话,添加“符号数学”标签,以便知识的人可以帮助 –