我有一個包含重複字符串的文件。文件是非常大的,所以我舉一個簡單的例子:如何在使用MATLAB的文件中查找字符串
a b c
w a g
b v f
我想提取a b
到一個數組。我怎樣才能在MATLAB中做到這一點?
我有一個包含重複字符串的文件。文件是非常大的,所以我舉一個簡單的例子:如何在使用MATLAB的文件中查找字符串
a b c
w a g
b v f
我想提取a b
到一個數組。我怎樣才能在MATLAB中做到這一點?
嘗試使用TEXTSCAN。你可以用'\ n'分割文件,然後用cell2mat分割文件。
fid = fopen('your_string_file.ext');
input = textscan(fid, '%s', 'delimiter', '\n');
cellmatrix = cell2mat(input{1});
cellmatrix =
a b c
d f a
b v f
然後,如果有一個特定的模式,你可以行走cellmatrix。假設你想在一行中的a b
模式,你可以做到以下幾點:
pattern = ['a', 'b'];
patindex = 1;
dims = size(cellmatrix);
for i=1:dims(1)
patindex = 1;
for j=1:dims(2)
if strcmp(cellmatrix(i,j), ' ')
continue
end
if strcmp(cellmatrix(i,j), pattern(patindex))
patindex = patindex+1;
if patindex > length(pattern)
FOUND... store location/do what you want
patindex = 1;
end
else
patindex = 1;
end
end
end
你可以改變你的支票找到你從矩陣想要的任何圖案。
這假定你的文件會適合內存 - 如果它太大而不能適應你的內存一半,你需要做一些更加棘手的事情,增量傳遞和文件寫入。 !
後,您必須從答案1,您可以使用STRCMP創建一個真正的的Cellmatrix /落在關於你式樣矩陣:
strcmp(cellmatrix,'a')
如果你的文件是非常大的,所以它不適合你內存,嘗試讀取一行一行地使用與fgets文件:
fid = fopen('VERYBIGFILE');
tline = fgets(fid);
while ischar(tline)
disp(tline)
tline = fgets(fid);
%% DO SOME STUF WITH THE LINE
end
fclose(fid);
是否有一個原因/模式要如何提取字符串(''ab'')涉及的*重複*你的字符串文件? – Schorsch 2013-05-14 17:45:04
不,不幸的。 – newzad 2013-05-14 17:54:25
所以基本上,你正在尋找一個特定的字符串,這將作爲輸入,在一個文件中。 ['''strfind''](http://www.mathworks.com/help/matlab/ref/strfind.html)是否適合你? – Schorsch 2013-05-14 17:56:45