gpt4 book ai didi

matlab - 为什么不能在 Matlab 中创建水平字符串数组?

转载 作者:太空宇宙 更新时间:2023-11-03 20:20:14 24 4
gpt4 key购买 nike

如果我尝试按如下方式创建一个字符串数组,我将得到一个连接的字符串(或 1x6 数组?)。

>> [ 'A1' 'A2' 'A3']
ans = A1A2A3

我希望获得的是一个包含 3 个元素的字符串数组,如 ['A1' 'A2' 'A3']

如果我尝试首先创建一个垂直字符串数组并将其转置,我将得到:

>> transpose([ 'A1'; 'A2'; 'A3'])
ans =

AAA
123

这与 python 创建字符串列表有很大不同。我不知道为什么 'A1'、'A2' 和 'A3' 不分开放置而是连接在一起。好像背后有一些原理我不是很明白。希望有人能解释一下。谢谢!

最佳答案

在 python 中,您有一个包含 str 实例的 list

A = ['A1', 'A2', 'A3']
type(A)
# <type 'list'>

type(A[0])
# <type 'str'>

在 MATLAB 中,array 本身并不是一种数据类型,因为从技术上讲,所有数据类型本质上都是数组。例如,'A1'char 类型的 2 元素数组。

当您使用 [] 包含多个多字符字符串时,这些值将连接在一起,输出也将是一个 char。在您的例子中,这会将所有输入字符数组连接成一个 6 元素字符数组。

A = ['A1', 'A2', 'A3'];
class(A)
% char

size(A)
% 1 6

如果你想要一个数组,其中每个元素都是非标量的(并且可能是不同的数据类型),你需要使用元胞数组

A = {'A1', 'A2', 'A3'}

关于matlab - 为什么不能在 Matlab 中创建水平字符串数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38852424/

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