将struct转换为单元格或矩阵?

时间:2016-05-24 01:10:52

标签: arrays matlab cell

我有一个从标签文件导入的结构数组,有100多个名称\双行。第一行有一个字符值(name \ char)。我正在尝试将其作为矩阵加载并将其转换为单元格,完全删除顶行。

但是当我使用cell2mat(array)时,它有错误:

  

输入单元格数组的所有内容必须具有相同的数据类型。

我知道这是来自Names vs. double列。但有没有办法将其转换为矩阵?或者,如果数据是

name | 1000x1 double

将它留作单元格数组更好吗?

1 个答案:

答案 0 :(得分:0)

不可能有一个包含字符串和数值的矩阵。如果你想要这样的东西,单元格阵列是你唯一的选择。但是,如果您想使用矩阵/向量运算或期望矩阵/向量作为输入的函数来处理数值,那将是非常有限的。一种选择是分别存储字符串和数字数据;将字符串保留在单元格数组S中,将数字数据保存在矩阵M中。然后,跟踪元素。例如,S{i}和行M(i, :)都可以与原始表中的条目i相对应。另一个选择是使用struct()创建自己的数据结构,if ([self.sitRUser isParent]) { //[self performSegueWithIdentifier:PARENT_HOME_SEGUE sender:self]; UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"HomeStoryboard" bundle:nil]; HomeViewController *rootViewController = [storyboard instantiateViewControllerWithIdentifier:@"HomeViewController"]; UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:rootViewController]; [navController setViewControllers: @[rootViewController] animated: YES]; UIStoryboard *storyboardLogin = [UIStoryboard storyboardWithName:@"LogIn" bundle:nil]; MenuTableViewController *rearViewController = [storyboardLogin instantiateViewControllerWithIdentifier:@"MenuTableView"]; [self.revealViewController setFrontViewController:navController]; [self.revealViewController setFrontViewPosition: FrontViewPositionLeft animated: YES]; [self.revealViewController setRearViewController:rearViewController animated:YES]; [self.navigationController setViewControllers:@[rootViewController] animated:YES]; } else { //[self performSegueWithIdentifier:SITR_HOME_SEGUE sender:self]; UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"SitterHomeStoryboard" bundle:nil]; SitterHomeViewController *rootViewController = [storyboard instantiateViewControllerWithIdentifier:@"SitterHomeViewController"]; UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:rootViewController]; [navController setViewControllers: @[rootViewController] animated: YES]; [self.revealViewController setFrontViewController:navController]; [self.revealViewController setFrontViewPosition: FrontViewPositionLeft animated: YES]; [self.navigationController setViewControllers:@[rootViewController] animated:YES]; } 可以包含字符串和数值。