読み取りファイルの文字列間の空白によるreadcellのエラー
4 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
wataru suzuki
il 2 Ott 2020
Commentato: wataru suzuki
il 2 Ott 2020
下記のようなプログラムを書き、文字列[No Data]があるファイルからデータを読み込み計算するプログラムを
作りたいと考えています。
しかし文字列のNo と Dataの空白が原因で配列の形が望むものと変わってしまい以下のようなものが発生してしまいます。
エラー: cell2mat (line 45)
入力のセル配列のすべての内容は、同じデータ型でなければなりません。
エラー: colormap12 (line 15)
myMatrix = cell2mat(ret);
今後のプログラムのデータ数が膨大なためMATLABからreadcellで読み込む前に空白の削除を行う、
配列の形状を直せないかをなど考え、strtrimなどを行ってみたのですが私のみでは解決できませんでした。
解決方法を教えていただけないでしょうか
プログラム
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ret = readcell('sanple_8.txt', 'NumHeaderLines', 5);
tmp = find(strcmp('No Data', ret));
ret(tmp) = num2cell(10);
disp(ret(tmp));
myMatrix = cell2mat(ret);
q = zeros(3,3);
for i = 1:9
q(myMatrix(i,2)+1,myMatrix(i,1)+1) = myMatrix(i,3);
end
image(q,'CDataMapping','scaled')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
読み取りテキストファイル
0 Commenti
Risposta accettata
Kojiro Saito
il 2 Ott 2020
importOptionsを使って、読み込む変数を3つだけに絞り込んでみたら良いと思います。
filename = 'sample.txt';
opts = detectImportOptions(filename);
opts.SelectedVariableNames = {'x', 'y', 'A'}; % x,y,Aの3列だけ読み込む
% 列操作が楽なので、一旦tableとして読み取ります
ret = readtable(filename, opts);
% No Dataの部分はA列に「No」として読み取られ、数値でないのでNaNが格納されます
% A列からNaNの行を抽出します
idx = isnan(ret.A);
% NaNのところに10を代入します
ret.A(idx) = 10;
% 配列に変換します
myMatrix = table2array(ret);
Più risposte (0)
Vedere anche
Categorie
Scopri di più su テキスト ファイル in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!