如何在 MATLAB 中显示结构数组的选定条目
How to display selected entries of an array of structures in MATLAB
假设我们有一个结构数组。该结构具有字段:name
、price
和 cost
.
假设数组 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);
假设我们有一个结构数组。该结构具有字段:name
、price
和 cost
.
假设数组 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);