0

次のようなMatlabのファイルを読み取る必要があります。

D:\Classified\positive-videos\vid.avi 163 3 14 32 54 79 105 130 155 202 216 224 238 250 262 288 288 322 357 369 381 438 457 478 499 525 551

D:\Classified\vid\2-positive. avi 163 3 14 32 54 79 105 130 155 202 216 224 238 250 262 288 288 322 357 369 381 438 457 478 499 525 551

改行で区切られたそのような行がたくさんあります。次のように読み取る必要があります。ビデオ名のパスと最初の整数(たとえば、最初の行の163)を破棄し、新しい行が発生するまで配列内のすべての数字を読み取ります。これはどのように行うことができますか?

4

2 に答える 2

2

より簡単な方法は次のとおりです。

fid = importdata(filename)
results = fid.data;

Ad maora。

編集

文字列の後の最初の値を破棄したいので、呼び出す必要があります

res = fid.data(:,2:end);

の代わりにresults

于 2013-04-08T20:09:53.423 に答える
2

次のことができます。

fid = fopen('test1.txt','r');
my_line = fgetl(fid);
while(my_line ~= -1)
    my_array = regexp(my_line,' ','split');
    my_line = fgetl(fid);
    disp(my_array(3:end));
end
fclose(fid);

これにより、次のことが得られます。

ans = 

  Columns 1 through 11

    '3'    '14'    '32'    '54'    '79'    '105'    '130'    '155'    '202'    '216'    '224'

  Columns 12 through 22

    '238'    '250'    '262'    '288'    '288'    '322'    '357'    '369'    '381'    '438'    '457'

  Columns 23 through 26

    '478'    '499'    '525'    '551'


ans = 

  Columns 1 through 11

    '3'    '14'    '32'    '54'    '79'    '105'    '130'    '155'    '202'    '216'    '224'

  Columns 12 through 22

    '238'    '250'    '262'    '288'    '288'    '322'    '357'    '369'    '381'    '438'    '457'

  Columns 23 through 26

    '478'    '499'    '525'    '551'

編集

数値行列の結果については、次のように変更できます。

clear;
close;
clc;

fid = fopen('test1.txt','r');
my_line = fgetl(fid);
my_array = regexp(my_line,' ','split');
my_matrix = zeros(0, numel(my_array(3:end)));
ii = 1;
while(my_line ~= -1)
    my_array = regexp(my_line,' ','split');
    my_line = fgetl(fid);
    my_matrix = [my_matrix;zeros(1,size(my_matrix,2))];
    for jj=1:numel(my_array(3:end))
        my_matrix(ii,jj) = str2num(cell2mat(my_array(jj+2)));
    end
    ii = ii + 1;
end
fclose(fid);

これにより、次のようになります。

my_matrix =

     3    14    32    54    79   105   130   155   202   216   224   238   250   262   288   288   322   357   369   381   438   457   478   499   525   551
     3    14    32    54    79   105   130   155   202   216   224   238   250   262   288   288   322   357   369   381   438   457   478   499   525   551
于 2013-04-08T18:59:29.907 に答える