0

txt ファイルを読み込んでから、txt ファイルのすべての文字列をループしようとしています。残念ながら、それを機能させることはできません。

fid = fopen(fullfile(source_dir, '1.txt'),'r')
read_current_item_cells = textscan(fid,'%s')
read_current_item = cell2mat(read_current_item_cells);

 for i=1:length(read_current_item)

 current_stock = read_current_item(i,1); 
 current_url = sprintf('http:/www.', current_item)
 .....

textscan が cell 配列を出力するので、基本的に cell 配列を行列に変換しようとします。しかし今、私はメッセージを受け取ります

cell2mat の使用エラー (53 行目) セル配列またはオブジェクトを含むセル配列はサポートできません。

どんな助けでも大歓迎です

4

2 に答える 2

3

これが の通常の動作ですtextscan。関数に渡した書式文字列の各書式指定子に対応する値を含むセル配列 (指定子に応じて) の各要素が別のセルまたは配列であるセル配列を返します。たとえば1.txt

appl 12
msft 23

コードを実行すると戻ります

>> read_current_item_cells
read_current_item_cells = 
    {4x1 cell}

>> read_current_item_cells{1}
ans = 
    'appl'
    '12'
    'msft'
    '23'

それ自体が別の cell 配列です。

>> iscell(read_current_item_cells{1})
ans =
     1

およびその要素には、次を使用してアクセスできます

>> read_current_item_cells{1}{1}
ans =
appl

フォーマットを から'%s'に変更する'%s %d'と、

>> read_current_item_cells
read_current_item_cells = 
    {2x1 cell}    [2x1 int32]

>> read_current_item_cells{1}
ans = 
    'appl'
    'msft'

>> read_current_item_cells{2}
ans =
          12
          23

しかし、興味深い部分は、

>> iscell(read_current_item_cells{1})
ans =
     1

>> iscell(read_current_item_cells{2})
ans =
     0

つまり、 に対応するセル要素は%sセル配列に変換され、 に対応するセル要素%dは配列として残されます。ファイル内の行の正確な形式がわからないので、1 つの要素を持つ 1 つのセル配列があり、それがテーブル内のすべての要素を含む別のセル配列であると推測します。

于 2013-08-13T20:50:11.687 に答える