gpt4 book ai didi

arrays - 将字符串添加到空数组给出 `NAN`

转载 作者:行者123 更新时间:2023-12-05 09:33:10 31 4
gpt4 key购买 nike

在 MATLAB 中,我想迭代地将字符串添加到数组 s,并且我通过 s = [] 初始化了 s。但是,当我运行下面的代码时

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

结果

>> s

s =

NaN NaN

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


但是,当我在s中已经有""时,即s = [""],那么下面的所有元素都可以添加到 s 没有问题:

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

给予

s = 

1×3 string array

"" "a" "b"

最佳答案

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

s = []

s 默认是 double 类。

因此,当您尝试在此数组中添加新字符串时,matlab 会尝试进行隐式转换 string -> double。并且 matlab 在必须处理 string -> double 转换时输出 NaN (除非此字符串可以解释为数字 as mentionned by @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 知道它需要生成一个字符串数组。

关于arrays - 将字符串添加到空数组给出 `NAN`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67385525/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com