2013-09-30 3 views
1

Так что у меня есть .tcl файл с данными, представляющими большую трехмерную матрицу, и все значения, связанные с матрицей, приложенном в одном столбце, например:одноколоночных Матрица Индексация

128 128 512 
3.2867 
4.0731 
5.2104 
4.114 
2.6472 
1.0059 
0.68474 
... 

Если я загружаю файл в окно командной строки и whos переменной, у меня есть это:

whos K 
    Name   Size    Bytes Class  Attributes 

    K   8388810x3    201331440 double  

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

+0

Если все значения хранятся в одном столбце, почему первая строка имеет три значения? –

+0

И почему так много лишних строк? (8388810 против 8388608) – chappjc

+0

Это оба хорошие вопросы. Первая строка имеет три значения, поскольку файл был первоначально отформатирован как вход для скрипта Fortran; Я просто переоцениваю вещи. Он был по существу выпущен как заголовок с прилагаемыми данными. Если я проигнорирую эту строку, тем не менее, это все равно оставляет 201 дополнительный ряд, как отмечено. Я работаю над отслеживанием исходного источника, чтобы решить эту проблему. Однако эта аномалия в стороне, решение для изменения формы прекрасно работает. Благодаря! – hfisch

ответ

1

Первая строка файла (128 128 512) дает ему 3 колонки. Я не знаю, почему есть так много дополнительных строк (128 * 128 * 512 = 8388608), но ваша 3d матрица, вероятно, может быть построена следующим образом:

N = 128*128*512; 
mat = reshape(tab(2:N+1,1),[128 128 512]); 

Что на последние сто строк таблицу, которая загружается?

Смежные вопросы