首页 > 解决方案 > 将文本文件导入为矩阵

问题描述

我正在尝试将 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=强影响。)

结果应该是这样的

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

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))

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

标签: octave

解决方案


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

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;

推荐阅读