如何在MATLAB中显示结构体数组的选定条目

3
假设我们有一个结构体数组,结构体有三个字段: namepricecost

假设数组 A 的大小为 n x 1。如果我想要显示第一、第三和第四个结构体的名称,我可以使用以下命令:

A([1,3,4]).name

问题在于它在屏幕上打印出以下内容:
ans = 

    name_of_item_1

ans = 

    name_of_item_3

ans = 

    name_of_item

我该如何去掉那些 "ans =" 的内容?我尝试了以下操作:
disp(A([1,3,4]).name);

只是得到一个错误/警告。

2个回答

3

通过执行A([1,3,4]).name,您将返回一个逗号分隔的列表。这相当于在MATLAB命令提示符中键入以下内容:

>> A(1).name, A(3).name, A(4).name

这就是为什么你在MATLAB命令提示符下会看到ans = ...三次的原因。

如果您想将所有字符串一起显示,请考虑使用strjoin将所有名称连接起来,我们可以用逗号将名称分开。 为此,您需要将它们全部放入一个单元数组中。 让我们将此单元数组称为names。 因此,如果我们这样做:

names = {A([1,3,4]).name};

这与执行以下操作相同:

names = {A(1).name, A(3).name, A(4).name};

这将创建一个1 x 3的单元格名称数组,我们可以使用这些名称通过用逗号和空格分隔它们来将它们组合在一起:
names = {A([1,3,4]).name};
out = strjoin(names, ', ');

您可以展示最终字符串的样子:
disp(out);

1

您可以使用:

[A([1,3,4]).name]

然而,这种方法会将所有名称连接成一个字符串。

更好的方法是使用单元数组:

{ A([1,3,4]).name }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接