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

How to display selected entries of an array of structures in MATLAB

假设我们有一个结构数组。该结构具有字段: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);

才得到一个error/warning.

您可以使用:

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

但是,这会将所有名称连接成一个字符串。

更好的方法是使用以下方法制作元胞数组:

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

通过 A([1,3,4]).name,您将返回 comma-separated list。这相当于在 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 的名称元胞数组,我们可以使用这些名称将它们连接在一起,方法是用逗号和 space:

分隔它们
names = {A([1,3,4]).name};
out = strjoin(names, ', ');

然后您可以显示最终字符串的样子:

disp(out);