Octave 将 strsplit 返回值向量化为单独的变量

Cha*_*ski 2 vectorization octave lvalue strsplit

我有一个包含记录列表的文件,我一次解析一行。每条记录都以换行符分隔,每个值以空格分隔。这只是一个简化的例子,但它具有与真实数据相似的结构。

Bob blue pizza
Sally red sushi
Run Code Online (Sandbox Code Playgroud)

第一个值是名称,然后是他们最喜欢的颜色,然后是他们最喜欢的食物。假设这是在一个处理循环中,我想为每个值设置变量。对于第一行,我的值应该是这样的。

friendsName = "Bob";
favoriteColor = "blue";
favoriteFood = "pizza";
Run Code Online (Sandbox Code Playgroud)

我在行中阅读并开始

lineInFile = "Bob blue pizza";
Run Code Online (Sandbox Code Playgroud)

strsplit 似乎是个好主意,但它输出一个单元格数组而不是一个字符串矩阵,我最终得到

strsplit(lineInFile, " ") =
{
  [1,1] = Bob
  [1,2] = blue
  [1,3] = pizza
}
Run Code Online (Sandbox Code Playgroud)

我想要类似的东西

{friendsName,favoriteColor,favoriteFood} = strsplit(lineInFile, " ");
Run Code Online (Sandbox Code Playgroud)

这给了我 error: invalid lvalue function called in expression

数组可以用作左值,所以我试过了

cell2mat(strsplit(lineInFile, " "))
ans = Bobbluepizza
Run Code Online (Sandbox Code Playgroud)

那不是我想要的。

Cha*_*ski 5

这奏效了。

 [friendsName favoriteColor favoriteFood] = strsplit(lineInFile, " "){1,:}
Run Code Online (Sandbox Code Playgroud)