我正在尝试在Matlab中声明一个结构:
book = struct('name', '', 'author','', 'price,'', 'date_of_pub','')
num_books = input('enter number of books')
然后声明一个数组(list_of_books),其中包含有关数字(num_books)书籍的信息。
在C中,我会做这样的事情(示例代码,不详细说明)
typedef struct {
char name[20];
char author[20];
float price;
date date_of_pub; //'date' being another predefined struct containing dd, mm, yy
}book;
int main()
{
int num_books = 0;
printf("enter number of desired books\n");
scanf("%d", &num_books);
book *list_of_books = malloc(num_books * sizeof(book));
for(i = 0; i < num_books; ++i){
printf("enter name of book #%d:\n",i+1);
scanf("%s", list_of_books[i].name);
//same for the other info
}
/ *另一个循环打印书籍上的信息,这可能是一个单独的功能等* /
我知道http://www.mathworks.com/help/matlab/structures.html,但我正在寻找具有类似实现的Matlab代码示例以供学习。或者,如果您有任何其他资源我可以查看,使用代码示例,将非常感激。谢谢。
答案 0 :(得分:1)
要创建包含list_of_books
num_books
份副本的数组book
,只需使用repmat
:
list_of_books = repmat(book, num_books, 1);
直接执行此操作(未先定义book
):
book = struct('name',repmat({''},num_books,1), 'author','', 'price','', 'date_of_pub','');
后者使用struct
的语法多值systax(由我添加的重点):
S = struct(field1',VALUES1,'field2',VALUES2,...)
使用指定的字段和值创建结构数组。价值 数组
VALUES1
,VALUES2
等必须是相同的单元格数组 大小,标量单元格或单个值。相应的元素 值数组被放入相应的结构数组元素。 结果结构的大小与值的大小相同 单元格数组或1-by-1,如果没有值是单元格。
请注意,为一个字段提供多个值(我在这种情况下使用了第一个字段)就足够了,其他字段会自动复制。