0

如果我有三个字符串,例如'Y20194', '219Y42''12345'我如何将它们分解成一个向量,例如[Y 2 0 1 9 4],[1 2 3 4 5][2 1 9 Y 4 2]? 我正在使用str2num,但我认为在转换为数值之前我错过了一个步骤(首先将字符串中的各个数字分开)。此外,字符读取不正确并且使用str2num给了我[]。

我有一个带有字符串行的文件,例如上面的那个。我曾经fgetl将文件的每一行读入字符串,但我有点卡住了。

4

4 回答 4

2

数字向量中不能同时包含字符和数字。

您可以执行以下操作:

s = 'Y20194';
c = cellstr(s')';
v = str2double(c);

单元格数组c将所有字符从s分隔到单个单元格中。请注意,您必须先转置字符串s

在向量v中,第一个值将是 NaN,因为它是一个字符。

于 2013-03-13T19:29:07.563 回答
1

字符将被保留。并且数字将被转换为双精度类型。

如果输入不是来自读取文件,则代码如下。result1 是包含所需数组的单元格:

在此处输入图像描述

如果输入的是一个文件,我们以这个文件为例:demo1.txt,其内容如下: 在此处输入图像描述

将每一行转换为您想要的代码如下。该代码将每一行转换为您想要的,然后显示它。

在此处输入图像描述

如果你想用零替换'Y'或其他字母,那么代码如下

在此处输入图像描述

于 2013-03-13T20:19:12.660 回答
0

如果您想将其更改Y0一个非常简单的解决方案是可用的:

str = 'Y20194';
str(str==Y)='0';
str - '0'
于 2013-03-27T16:54:54.567 回答
0

也许STRSPLIT会有所帮助。

ts = strsplit('Y20194');
%       ts <- {'Y', '2', '0', '1', '9', '4'}

现在您可以尝试使用 str2num 将向量中的每个元素单独转换为数字。

N = size(ts, 1);
str = cell(1, N);
for i=1:N;
    str{i} = str2num(ts{i, 1});
end

但由于字符串中的某些字符不是数字(例如,'Y'),我不希望它完美地工作。

(已经有一段时间了,我的一些索引可能会切换。)

于 2013-03-13T19:11:15.140 回答