【问题标题】:Importing Textfile as Matrix将文本文件导入为矩阵
【发布时间】:2019-07-18 19:10:53
【问题描述】:

我正在尝试将 txt 文件导入到包含数据矩阵的 octave。 矩阵如下所示:

49       ..1. ...1.......... .....       49
47       ..12 ...1...... ... .....       47
45       ..12....1...... 2....1...       45
43      ....2....1...... 2...1....       43
41      .1..2.. .........2. .1.....      41
39      .1.12.2....1.....2. .1.....      39
37      .1..2.22...1.....2. .1.....      37
35      .1. 2222...2....2....1.1...      35
33      ....22.2...2....2....12....      33
31      ....22.2...2..........21...      31
29      .....2.2...2.....2....21...      29
27     ........222222....2....21....     27
25     .......22.2222....2.22.2.....     25
23     .......22.2222....2.2..2.....     23
21     .......222.222....2.2........     21
19     ........22.222....2..........     19
17    ..........2.2.2...22...........    17
15    ...............................    15
13    .......................2.......    13
11    .......................2......2    11
 9   ........................2.....222    9
 7 . ................. ..... ......222.   7
 5 ..................           ....1..   5
 3 ....... .........               ....   3
 1                                        1

这实际上是我必须绘制的地图/坐标系(y 轴=方位角,x 轴=纬度)。 (空白=无数据,.=无影响,1=弱影响,2=强影响。)

结果应该类似于this

因为我没有导入这个txt-File,所以我把它改成了这个。

49;1;1;1;1;1;1;1;2;2;3;2;1;2;2;2;3;2;2;2;2;2;2;2;2;2;2;1;2;2;2;2;2;1;1;1;1;1;1;1;49
47;1;1;1;1;1;1;1;2;2;3;4;1;2;2;2;3;2;2;2;2;2;2;1;2;2;2;1;2;2;2;2;2;1;1;1;1;1;1;1;47
45;1;1;1;1;1;1;1;2;2;3;4;2;2;2;2;3;2;2;2;2;2;2;1;4;2;2;2;2;3;2;2;2;1;1;1;1;1;1;1;45
43;1;1;1;1;1;1;2;2;2;2;4;2;2;2;2;3;2;2;2;2;2;2;1;4;2;2;2;3;2;2;2;2;1;1;1;1;1;1;1;43
39;1;1;1;1;1;1;2;3;2;3;4;2;4;2;2;2;2;3;2;2;2;2;2;4;2;1;2;3;2;2;2;2;2;1;1;1;1;1;1;39
37;1;1;1;1;1;1;2;3;2;2;4;2;4;4;2;2;2;3;2;2;2;2;2;4;2;1;2;3;2;2;2;2;2;1;1;1;1;1;1;37

等等。 这适用于我的代码。

RawMap = dlmread('C:\Desktop\2576.map', ';', 0:80, 0:24)
Map = flipud(RawMap)
pcolor(Map(:,2:end-1))

为此,我不想自动更改代码。所以我需要导入原始文件。 有什么建议么? 谢谢

【问题讨论】:

  • 您将需要逐行编写自己的阅读器/解析器阅读行。
  • 我会建议你预处理你的文本文件(看起来像你已经做过的那样),并用数字替换点和空格(例如分别为 9 和 0),然后将其读取为一个矩形字符数组,丢弃每行的第一个和最后两个条目,并转换为数字(例如,通过从结果中减去 '0')。

标签: octave


【解决方案1】:

这是一种有意义地解析文件的方法:

S = fileread('testo.txt');
S = strsplit (S, "\n");
S = strvcat( S );
S = double(S);
S = S(:, 4:end-4);

S( S == double(" ") ) = 0;
S( S == double(".") ) = 1;
S( S == double("1") ) = 2;
S( S == double("2") ) = 3;

pcolor(S); axis ij;

【讨论】:

  • 太棒了!完美运行。谢谢!
猜你喜欢
  • 2014-12-15
  • 1970-01-01
  • 2014-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-01
  • 1970-01-01
相关资源
最近更新 更多