2013-09-27 5 views
1

Я хочу сделать вектор матрицы с загрузкой данных текстового файла.Создание матрицы матрицы путем загрузки данных «MATLAB»

Я использую cat.

n : number of matrices. 
p : number of columns of matrices. 

каждая матрица имеет 4 ряда. Например, у меня есть 1200 номеров в одном текстовом файле и p равно 3, поэтому n=100. Как это сделать?

Это то, что я пытался сделать:

X = cat(n,[1...p; ; ; ],...,[ ; ; ; ]); 
+1

Это недостаточно информации, пожалуйста, опишите, как выглядят соответствующие переменные и файл, и что происходит при попытке вашего решения. –

+0

Первый аргумент в 'cat' - это размер, по которому вы хотите co concatenate, а не количество элементов для конкатенации. В вашем случае первый аргумент может быть 1, 2 или 3, в зависимости от того, чего вы хотите достичь. –

+0

У меня есть номера 1 ... n (1200) в одном столбце файла txt. Я хочу импортировать эти данные в вектор из 4 * 3 матриц или других измерений ... –

ответ

0

описание немного расплывчатым, но вот то, что я бы рекомендовал:

  1. Читать все данные в MATLAB (Похоже, вы знаете, как это сделать)
  2. Поместите все в одну большую матрицу или вектор
  3. Только после того, как все вместе, используйте команду reshape

В вашем случае вы можете захотеть сделать что-то вроде этого на шаге 3:

raw = rand(1200,1); %Assuming your data looks something like this 
X = reshape(raw,[],4,3); 

Для 1200 значений это даст вам 100x4x3 ответ. Просто убедитесь, что это кратное число 4x3, если вы примените изменение таким образом.

Update

Видимо это изменение Аскер искал, 4x3x100 матрица:

X =reshape(r,4,3,100) 
+0

Спасибо за ваш ответ, но он делает три матрицы размером 1200 * 4!! –

+0

r = 1 + (2-1). * Rand (1200,1); теперь я хочу поставить эти цифры в сто 4 * 3 ... X = cat (100, ...) и применить, например: X (3,:, 56) –

+0

@AlekMorfy Если я делаю 'r = 1 + (2-1). * Rand (1200,1); 'и check' size (reshape (r, [], 4,3)) 'он красиво дает мне 100x4x3. Это означает, что вы можете использовать его через 'X (3,:, 56)'. Поиграйте немного с входами 'reshape', чтобы получить то, что вы хотите. --- возможно 'reshape (r, 100,4,3)' или 'reshape (r, 100,3,4)' –

0

Если вы знаете, количество матриц (п), вы можете хранить его в массив ячеек, как этот

myCellArray = cell(n,1); 
for it = 1:n 
    myCellArray{it} = (...) %Load matrix whatever how you do it (Load, fread,...) 
end 

или только с использованием динамического распределения, но не очень эффективно,

myArray = []; 
myArray = [myArray newLoadArray]; 
+1

Ячейки ячеек в основном предназначены для данных с нерегулярными размерами.Поскольку здесь все красиво 4x3 (или какой-то другой регулярный размер), он чувствует, что отходы не используют Matrices. –

+0

После того, как я прочитал, я больше понимаю его вопрос. И вы правы, массив ячеек - это не то, что ему нужно. – Vuwox

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