Я использую 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 набора данных, поэтому я делаю, как указано выше. Это ошибка? Что мне делать?
Я попробовал их обоих. a {1,1} = u (1,1) .data (:, 2) возвращает назначение содержимого ячеек неядерному массиву, тогда как a (1: 1001,1) = u (1,1) .data (:, 2) возвращает несоответствие размерности присваиваемых индексов. Странно, что если я нахожу a = u (1,1) .data, нет проблемы: a становится массивом с элементами, которые мне нужны. – ragnar
Да, но что такое '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