У меня есть текстовый файл, в котором есть несколько элементов:
5
4
4 3 1 4
3 1 2 1
9 8 1 3
4 Inf Inf 4
13 9 Inf 6
1 3
2 3
3 4
4 5
-1 -1
Мне нужно создать 2 разные матрицы с этими элементами.Первые два элемента в первых двух строках (здесь 5 и 4) соответствуют размеру (mxn) первой матрицы (в этом примере матрица 5x4).Я должен назначить следующие mxn элементы (от row2 до row5, всего 20 элементов здесь) в матрицу.После этого оставшиеся значения до последней строки (которая имеет -1 -1) должны быть назначены другой матрице pxt (В этом примере матрица 4x2. Строка с -1 -1 указывает конец строки.)
Я буду использовать много текстовых файлов, и количество строк и столбцов в них различаются (размеры создаваемых матриц различны.), Поэтому мне нужно написать коды, которые могут запускать всетекстовые файлы.Я пытался написать кусок кода, но его результаты неверны, потому что между значениями есть пустые пробелы, и программа считает эти пробелы символами.Кроме того, 13 и Inf имеют более одного персонажа.Вот мой код и результат для первой матрицы.Кроме того, мне нужно создать вторую матрицу, как я объясняю, но я не знаю, как это сделать.
clear;
clc;
fileID=fopen('1.txt', 'r');
nrow = fscanf(fileID,'%d',1);
ncolumn = fscanf(fileID,'%d',1);
maxrix1 = zeros(nrow,ncolumn);
a = 1;
nline = 1;
while ~feof(fileID) && nline<nrow+2
line = fgetl(fileID);
if(nline > 1 && nline<=nrow+2)
for b = 1:ncolumn
if ~ischar(line), break, end
maxrix1(a, b) = str2double(line(b));
end
a = a + 1;
end
nline = nline + 1;
end
fclose(fileID);
Вот результат, который я получил, но это не так из-запустые места и элементы, которые имеют более одного символа (Inf и 13)
4 NaN 3 NaN
3 NaN 1 NaN
9 NaN 8 NaN
4 NaN NaN NaN
1 3 NaN 9
Должно быть:
4 3 1 4
3 1 2 1
9 8 1 3
4 Inf Inf 4
13 9 Inf 6
После исправления кода для создания matrix1 мне нужно создатьматрица2 так:
1 3
2 3
3 4
4 5