3

假设我们有一个结构数组。该结构具有字段namepricecost

假设数组A有 size 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);

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

4

2 回答 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);
于 2015-12-19T00:05:04.337 回答
1

您可以使用:

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

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

更好的方法是使用以下方法制作单元阵列:

{ A([1,3,4]).name }
于 2015-12-18T23:43:07.693 回答