首页 > 解决方案 > 将字符串添加到空数组会给出“NAN”

问题描述

在 MATLAB 中,我想迭代地将字符串添加到 array ss并由s = []. 但是,当我运行下面的代码时

s = [];
s(end+1) = "a";
s(end+1) = "b";

结果是

>> s

s =

   NaN   NaN

有谁知道这个问题背后的原因和解决方法?


但是,当我已经""s, ie,中时s = [""],可以s毫无问题地添加以下所有元素:

s = [""];
s(end+1) = "a";
s(end+1) = "b";

s = 

  1×3 string array

    ""    "a"    "b"

标签: arraysstringmatlabvector

解决方案


当你初始化一个新数组时:

s = []

s默认情况下,是 double 类。

因此,当您尝试在此数组中添加新字符串时,matlab 会尝试进行隐式转换string -> double。当matlabNaN必须处理 string -> double转换时输出 a (除非该字符串可以解释为@CrisLuengo 提到的数字)。例如:

double("a") 
% Produce Nan

[]您可以使用 显式选择数组的数据类型,而不是使用 初始化数组strings

s = strings(0); % We create a 0x0 strings array. 
s(end+1) = "a";
s(end+1) = "b";

我们得到:

s = 

  1×2 string array

    "a"    "b"

当您初始化一个已经包含空字符串的数组时,matlab 知道它需要生成一个字符串数组。


推荐阅读