【问题标题】:Replace numeric values with symbols in an array用数组中的符号替换数值
【发布时间】:2017-03-15 22:39:53
【问题描述】:

我面临的问题如下:我得到了一个 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 的数组的通用解决方案。

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

【问题讨论】:

  • 你不能有一个包含数字和符号变量的标准数组。所有条目必须具有相同的数据类型。您可以使用单元格数组让每个单元格包含不同的类型。但这看起来很奇怪。您确定需要混合数字和符号内容吗?
  • 我给定了一个表示变量的 NaN 数组,但由于我正在编写求解器,因此提供的数据可以有 2、3、4 个 NaN,它们是 N 个变量。所以简而言之,我想找到第一个 NaN 替换为 x_1,第二个替换为 x_2 ... 然后有一个包含 0 和变量的数组来运行求解器。感谢您的宝贵时间。
  • 那么你需要一个 symbolic 数组吗?如果是这种情况,请添加“符号数学”标签,以便有知识的人可以提供帮助
  • 是的,加上你所说的,我可以得到一个包含 NaN 和数值的数组。但是只需要将 NaN 更改为符号变量。因此,如果可能的话,我需要在数组中包含数值和符号系统,但可能还有其他方法可以解决这个问题。

标签: matlab symbols symbolic-math solver


【解决方案1】:

你可以使用sym函数:

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

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

【讨论】:

  • 这正是我想要的。非常感谢您的宝贵时间。
猜你喜欢
  • 1970-01-01
  • 2019-04-29
  • 2016-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-04
  • 2021-12-26
  • 2014-02-01
相关资源
最近更新 更多