Какой формат нужен Matlab для ввода n-мерных данных? - PullRequest
4 голосов
/ 16 июня 2011

У меня есть 4-мерный словарь, который я создал с помощью скрипта Python для проекта интеллектуального анализа данных, над которым я работаю, и я хочу прочитать данные в Matlab, чтобы провести некоторые статистические проверки данных.

Читать 2-мерную матрицу тривиально. Я полагал, что, поскольку мое первое измерение имеет глубину только 4, я мог бы просто записать каждый его фрагмент в отдельный файл (всего 4 файла), где каждый файл имеет много двухмерных фрагментов, выглядя примерно так:

2 3 6
4 5 8

6 7 3
1 4 3

6 6 7
8 9 0

Это, однако, не работает, и Matlab читает его как одну непрерывную матрицу 6 x 3. Я даже посмотрел на меня, но не мог понять, как заставить его делать то, что я хотел. Как мне отформатировать это, чтобы я мог поместить 3 (или лучше больше) измерения в один файл?

Ответы [ 2 ]

7 голосов
/ 16 июня 2011

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

Скажем, ваш файл

3 2 3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

Чтобы прочитать массив в переменную *, выполните следующие действия: data

fid = fopen('myFile'); %# open the file (don't forget the extension)
arraySize = str2num(fgetl(fid)); %# read the first line, convert to numbers
data = str2num(fgetl(fid)); %# read the second line
data = reshape(data,arraySize); %# reshape the data
fclose(fid); %# close the file

Посмотрите на data доПосмотрите, как Matlab упорядочивает элементы в многомерных массивах.

2 голосов
/ 16 июня 2011

Matlab хранит данные столбца мудро.Таким образом, из вашего примера (при условии, что это матрица 3x2x3), Matlab будет хранить его как первый, второй и третий столбцы из первого «среза», затем первый, второй и третий столбцы из второго среза и так далее, как этот

2 
4
3
5 
6
8
6
1
7
4 
3
3
6
8
6
9
7
0

Таким образом, вы можете записать данные, как это, из python (я не знаю, как), а затем прочитать их в Matlab.Затем вы можете reshape вернуть его обратно в матрицу 3x2x3, и вы сохраните свой правильный порядок.

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