2013-04-17 3 views
-3

Я использую ImportData для извлечения ASCII файлов, как в примереImportData: проблемы при извлечении данных

u(1,1) = importdata('folder/file1_1.asc' ' ', 9) 
u(1,2) = importdata('folder/file1_2.asc' ' ', 9) 
u(2,1) = importdata('folder/file2_1.asc' ' ', 9) 

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

a = u(1,1).data(:,2) 

но если вместо этого я

a(1,1) = u(1,1).data(:,2) 

затем MATLAB возвращает ошибку (индексируются размерный присвоение рассогласование) и не работает. Я должен извлечь 272 набора данных, поэтому я делаю, как указано выше. Это ошибка? Что мне делать?

ответ

0

После a = u(1,1).data(:,2), что такое size(a)? Я уверен, что это не [1 1]! Вы пытаетесь поместить массив, i, e, data(:,2) в один элемент, то есть a(1,1). Может быть, вы хотите поместить его в массив ячеек?

a{1,1} = u(1,1).data(:,2) 

В противном случае что-то вроде этого (я предполагаю, что в вашей структуре данных, хотя здесь)

a(1:272,1) = u(1,1).data(:,2) 
+0

Я попробовал их обоих. a {1,1} = u (1,1) .data (:, 2) возвращает назначение содержимого ячеек неядерному массиву, тогда как a (1: 1001,1) = u (1,1) .data (:, 2) возвращает несоответствие размерности присваиваемых индексов. Странно, что если я нахожу a = u (1,1) .data, нет проблемы: a становится массивом с элементами, которые мне нужны. – ragnar

+0

Да, но что такое 'size (u (1,1) .data (:, 2))', если это не '' [1001, 1] ', то неудивительно, что' a (1: 1001,1) = u (1,1) .data (:, 2) 'не работает. Вы должны иметь одинаковые размеры с обеих сторон задания! Что касается ошибки с матрицей ячеек, убедитесь, что вы сначала очистите 'a'. Попробуйте это: 'clear; u (1,1) .data = rand (10) a {1,1} = u (1,1) .data (:, 2); b (1:10, 1) = u (1,1) .data (:, 2) ', и вы увидите, что оба метода действительно работают – Dan

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