2015-10-17 911 views
-1

希望你們中的一些人能幫助我。我已經將許多txt和表格轉換爲.txt文件。我這樣做是因爲pdf的三個值必須寫入exel。這不僅僅是因爲時間的推移而產生的,因此我認爲必須有比手動更好的方法。唯一需要提取的是日期,支持號碼和單個卷。我發現日期和支持號碼總是在同一行,因此即使重新生成145x1單元格,也很容易提取。但是這讓我想起了我的第一個問題。Matlab,將單元格轉換爲矩陣

每個單元格如下所示: 日期23/4-2015 支持號碼8 如何刪除空格?

我也必須提取音量。這是比較困難的,導致線的體積線區分從一個PDF到另一個,因此我創建了一個搜索功能,它的工作原理和創建的體積,這是創建一個酒窖看起來像這樣:

[233.4 452.2 94.6]

我只需要middlenumber,那麼如何將它創建爲矩陣? 請記住它是一個1x1單元格,帶有空格!

希望你們中的一些人能幫助我。

回答

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]'};

0

您可以使用strrep從字符串中刪除空格。這適用於包含字符串或char數組的cell,並返回與其應用於的對象類型相同的對象類型。如果你通過cellstrrep它將返回一個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