読み取りファイルの文字列間の空白によるreadcellのエラー
4 次查看(过去 30 天)
显示 更早的评论
下記のようなプログラムを書き、文字列[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 个评论
采纳的回答
Kojiro Saito
2020-10-2
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);
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 テキスト ファイル 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!