How to find a value in a file from the index of another array?

4 次查看(过去 30 天)
I have a data column with 7 columns. Based on column 1, 2 and 7 of the .txt file, I need to open my .dat file. Next, I need to find the value of the variable in the .dat file for the index (column 3 of the .txt file). How can I do this? This is a part of my .txt file:
20140101 0000 69760 -5.965 -36.250 26.0 02000
20140101 0000 69761 -5.974 -36.250 23.5 02000
20140101 0000 73180 -5.247 -36.187 23.5 02000
20140101 0000 73678 -5.229 -36.178 26.5 02000
20140101 0000 74178 -5.229 -36.169 26.5 02000
20140101 0000 128828 -6.576 -35.181 22.6 03000
20140101 0000 138373 -6.980 -35.009 20.8 02000
20140101 0000 139404 -7.259 -34.991 22.0 03000
20140101 0000 139904 -7.259 -34.982 23.0 03000
20140101 0000 140375 -6.998 -34.973 22.2 02000
20140101 0000 140404 -7.259 -34.973 24.5 03000
20140101 0000 140903 -7.250 -34.964 22.2 03000
  5 个评论
Walter Roberson
Walter Roberson 2020-10-1
You should not use %0 format specifications for input.
Using a format width is not needed in this case, as the columns are well separated.

请先登录,再进行评论。

回答(1 个)

Walter Roberson
Walter Roberson 2020-10-1
datfiledir = 'appropriate directory';
txtdata = load('YourFile.txt'); %don't worry, it is all numeric
nrow = size(txtdata,1);
outputs = [];
for K = 1 : nrow
key = txtdata(K,3);
filename = fullfile(datfiledir, sprintf('%08d_%04d_%05d.dat'. txtdata(K, [1 2 7])));
datdata = load(filename, '-ascii');
[found, idx] = ismember(key, datdata(:,1)); %the 1 needs to be adjusted according to the dat format
if found
outputs(K,:) = datdata(idx,:);
else
outputs(K,:) = nan(1,size(datdata,2));
fprintf('Warning: key %d not found for row %d in file "%s"\n', key, K, filename);
end
end
  1 个评论
pink flower
pink flower 2020-10-1
编辑:pink flower 2020-10-1
I got this error.
"Error using load
Number of columns on line 2 of ASCII file /home/amanda/Documentos/CODIGOS_RADAR/DADOS_ZDR/2014/jan2014/ZDR_02000_20140101_0000.dat must be the same as previous lines."
The .dat file is a 500 x 500 matrix. How can I use fopen to open it?

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Standard File Formats 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by