在 Matlab 中读取逗号分隔的字符串(不是文本文件)

Reading a comma-separated string (not text file) in Matlab

我想在 Matlab 中读取一个字符串(不是外部文本文件),其中的数值用逗号分隔,例如

a = {'1,2,3'}

我想将它存储在一个向量中作为数字。有什么功能可以做到吗?我只找到用于处理文本文件的过程和函数。 谢谢

我想你在找 sscanf

A = sscanf(str,formatSpec) reads data from str, converts it according to the format specified by formatSpec, and returns the results in an array. str is either a character array or a string scalar.

我将使用 eval 函数来“评估”向量。如果那是结构,我还将使用 cell2mat 来获取 '1,2,3' 文本(这也可以通过其他方法来实现。

% Generate the variable "a" that contains the "vector"
a = {'1,2,3'};
% Generate the vector using the eval function 
myVector = eval(['[' cell2mat(a) ']']);

让我知道此解决方案是否适合您

你可以试试str2num函数:

vec = str2num('1,2,3')

如果您必须使用单元格 a,根据您的示例,它将是:vec=str2num(a{1})

文档中有一些安全警告需要考虑,因此请了解您的代码是如何使用的。

另一个更灵活的选项是textscan。它可以处理字符串和文件句柄。

这是一个例子:

cellResult = textscan('1,2,3', '%f','delimiter',',');
vec = cellResult{1};