Matlab,将单元格转换为矩阵

时间:2015-10-17 06:45:34

标签: matlab

希望你们中的一些人可以帮助我。我已经将包含大量txt和table的pdf转换为.txt文件。我这样做是因为pdf的三个值必须写入exel。这要做的不仅仅是一次mounth,因此我认为必须有一个比手动更好的方式。唯一需要提取的是日期,支持号码和单个卷。我发现日期和支持号码总是在同一行,因此很容易提取,即使它被重新打入145x1单元格。但这让我想到了第一个问题。

每个单元格如下所示: 日期23 / 4-2015 支持编号8 我如何删除空格?

我还必须提取音量。这更加困难,因为音量的线索从一个pdf到另一个不同,因此我创建了一个搜索功能,它可以工作并创建音量,这是为一个看起来像这样的浴室创建的:

[233.4 452.2 94.6]

我只需要中间数,所以如何将其创建为矩阵? 请记住,这是一个1x1的单元格,有空格!

希望你们中的一些人可以帮助我。

2 个答案:

答案 0 :(得分:0)

对于第一个问题,您可以通过搜索字符行并使用strcmp标识空格来删除空格,然后将字符串的这些元素设置为空([])。以下是代码示例:

% number of character
N = length(my_string);

% character to remove (initialize all 0)
icut = zeros(1,N);

% check each character
for i = 1:N;
    % if character is a space, tag for removal
    if strcmp(my_string(i),' ');
        icut(i) = 1;
    end
end

% remove space characters
my_string(icut == 1) = [];

对于第二个问题,您可以将单元格的内容转换为数字数组,然后只需取第二个元素。

% convert the cell contents to an array of numbers
cell_array = str2num(my_cell{1});

% get the middle value
middle_value = cell_array(2);

这假设单元格包含值数组作为字符串,如my_cell = {'[233.4 452.2 94.6]'};

答案 1 :(得分:0)

您可以使用strrep从字符串中删除空格。这适用于包含字符串或cell数组的char,并返回与其应用的相同对象类型。如果您将cell传递给strrep,则会返回cell,如果您传入char数组,则会返回char数组。

>> C = {'Date 23/4-2015 Repportnumber 8'};
>> strrep(C, ' ', '') % Cell containing string (char array)
ans = 

    'Date23/4-2015Repportnumber8'
>> strrep(C{1}, ' ', '') % String (char array)
ans =

Date23/4-2015Repportnumber8

要将版本单元格数组转换为矩阵,您可以使用str2num。然后,您可以使用线性索引来提取正确的版本。

>> C = {'[233.4 452.2 94.6]'};
>> C = str2num(C{1});
>> C(2)
ans =

  452.2000