2015-05-05 4 views
1

Результатом решения уравнения полинома является вектор 1x2 или 1x1 в некоторых случаях. Я пытаюсь сохранить все решения для уравнений с разными коэффициентами. поэтому некоторые решения являются всего лишь 1x1 векторами. как я могу хранить их эффективно?matlab: хранить векторный вывод в матрице/ячейке

n = 1; 
%sol = zeros(size(coef)); %create solution matrix in memory 
sol = {}; 

while n < size(coef,2) 
     sol(n) = roots(coef(:,n)); 

end 

«Преобразование в ячейку из двойного не представляется возможным». ошибка.

Коэф факторная матрица

ответ

1

Вы почти у цели!

Для того, чтобы хранить векторы в качестве клеток в массиве ячеек, использовать фигурные скобки {} во время их назначения:

sol(n) = {roots(coef(:,n))}; 

или альтернативно:

sol{n} = roots(coef(:,n)); 

Таким образом, векторов/массивов может быть любого размера. Проверьте ссылку this для получения дополнительной информации о доступе к данным в массивах ячеек.

Кроме того, не забудьте прирастить n, иначе вы получите бесконечный цикл.

Всего код:

n = 1; 
%sol = zeros(size(coef)); %create solution matrix in memory 
sol = {}; 

while n <= size(coef,2) 
     sol(n) = {roots(coef(:,n))}; 
n = n+1 
end 
+0

хорошо это работает, но теперь получить матрицу полного 1x1 клеток массивов, без метода доступа желаемых значений. желательно, чтобы у меня была матрица векторов какого-то типа (2x1), легко итерационная обработка по сравнению с –

+0

Целью массивов ячеек является хранение данных разного размера. Если у вас есть данные 2x1 и 1x1, вы не можете использовать обычный массив для их хранения. –

+0

Я понимаю это, поэтому я получаю [2x1] как одно из решений, но это не говорит мне о значении, обращаясь к ним с помощью {} as ну, полагаю? решения округляются до целых чисел в векторах, как я извлекаю значения 15 цифр (максимум)? –

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