MATLAB - индекс превышает размеры матрицы - PullRequest
1 голос
/ 03 июня 2010

Привет, у меня проблема с матрицей ..

У меня много .txt файлов с разным количеством строк, но одинаковое количество столбцов (1 столбец)

e.g. s1.txt = 1234 rows
     s2.txt = 1200 rows
     s2.txt = 1100 rows

Я хотел объединить три файла. Так как у него разные строки .. когда я записываю его в новый файл, я получаю эту ошибку = индекс превышает размеры матрицы.

Как я могу решить эту проблему? ,

Ответы [ 3 ]

2 голосов
/ 03 июня 2010

Вы можете объединить три матрицы, просто сложив их: предполагая, что s1 и т. Д. Являются матрицами, в которых вы читаете, вы можете создать новую, например так:

snew = [s1; s2; s3];

Вы также можете использовать укладку в стиле [], не создавая новую матричную переменную, если вам нужно сделать это только один раз.

1 голос
/ 03 июня 2010

Вы предоставили слишком мало информации для точной диагностики вашей проблемы. Возможно, вы загрузили данные из ваших файлов в переменные в вашем рабочем пространстве. Возможно, s1 имеет 1 столбец и 1234 строки и т. Д. Затем вы можете объединить переменные в один вектор-столбец следующим образом:

totalVector = [s1; s2; s3];

и запишите его в файл с оператором save().

Это помогает?

0 голосов
/ 03 июня 2010

Позвольте мне предположить, что этот вопрос связан с вашим другим вопросом , и вы хотите объединить эти матрицы по столбцам, оставив пустые значения в столбцах с меньшим количеством данных.

В этом случае этот код должен работать:

BaseFile ='s';
n=3;
A = cell(1,n);
for k=1:n
    A{k} = dlmread([BaseFile num2str(k) '.txt']);
end

% create cell array with maximum number of rows and n number of columns
B = cell(max(cellfun(@numel,A)),n); 

% convert each matrix in A to cell array and store in B
for k=1:n
    B(1:numel(A{k}),k) = num2cell(A{k});
end

% save the data
xlswrite('output.txt',B)

Код предполагает, что у вас есть один столбец в каждом файле, иначе он не будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...