Предположим, у меня есть две столбцовые матрицы M=[0,1;2,3;4,5]
, и я хочу разбить их одновременно на два вектора. Я хочу, чтобы это было [A,B] = M
, поэтому A=[0;2;4]
и B=[1;3;5]
, но это не работает. Есть ли способ сделать это в одной строке кода? Моя фактическая матрица имеет около 20 столбцов, поэтому хранить их в одной строке было бы здорово!Разбиение матрицы на несколько столбцов
ответ
Самый простой способ сделать это - это комбинация num2cell
и deal
.
M = rand(4,2);
0.8173 0.2599
0.8687 0.8001
0.0844 0.4314
0.3998 0.9106
inputData = num2cell(M, 1);
[A, B] = deal(inputData{:});
A =
0.8173
0.8687
0.0844
0.3998
B =
0.2599
0.8001
0.4314
0.9106
Альтернативно, как suggested by Daniel можно опустить deal
:
[A, B] = inputData{:};
Это, как говорится, когда вы получаете большее количество элементов, просто оставить их в массив ячеек, а не пытаться жонглировать 20 переменные.
columns = num2cell(M, 1);
[4x1 double] [4x1 double]
Это именно то, что я искал. Я пробовал это раньше, но M уже был массивом ячеек, поэтому я пропустил преобразование в ячейку, что является критическим. –
@ HéctorvandenBoorn Хотя это может решить вашу прямую проблему. Я бы очень рекомендовал совет стакана и excaza в первоначальных комментариях. Если ваши данные имеют одинаковый размер, подумайте о том, чтобы поместить его в 2D-массив, поскольку производительность будет намного лучше. – Suever
Не нужно использовать 'deal':' [A, B] = inputData {:}; ' – Daniel
- 1. Разбиение матрицы на несколько пар столбцов в R
- 2. Разбиение матрицы на матрицы подгрупп
- 3. MATLAB: Разбиение матрицы на векторы
- 4. Разбиение матрицы
- 5. Разбиение матрицы на столбцы
- 6. Разбиение серии pandas на несколько столбцов
- 7. Разбиение динамического списка на несколько столбцов
- 8. Разбиение массивной матрицы на блоки
- 9. Рельсы, разбиение на страницы матрицы
- 10. Разбиение матрицы на субмат одного размера
- 11. Разбиение на несколько символов
- 12. Разбиение списка в ячейке Pandas на несколько столбцов
- 13. суммирование столбцов матрицы на основе другой матрицы
- 14. MATLAB: Разбиение матрицы на основе нескольких значений
- 15. Numpy: Как случайное разбиение/выбор матрицы на n-различные матрицы
- 16. Разбиение столбцов столбцов даты PARSE_DECLTYPES
- 17. Извлечь несколько столбцов из 3d-матрицы
- 18. Разбиение строки на несколько массивов
- 19. Разбиение числа на несколько диапазонов
- 20. разделить одну колонку на несколько столбцов двоичной матрицы
- 21. База данных Разбиение разделов-столбцов
- 22. Разбиение нескольких столбцов на нескольких критериях
- 23. Раскладка нескольких столбцов CSS: неправильное разбиение столбцов
- 24. Подмножество столбцов матрицы матрицы R на конкретную запись
- 25. Разбиение столбцов SQL в несколько столбцов на основе определенного значения столбца
- 26. Разбиение DataTable на несколько таблиц данных
- 27. Разбиение столбцов матрицы, отсортированная точка каждого из них, затем выкладка на рисунке
- 28. Разбиение матрицы в 5 множеств в Matlab
- 29. Случайное разбиение матрицы с использованием MATLAB
- 30. Разбиение данных в два столбцов
Зачем вы хотите это сделать? – excaza
Зачем вам это нужно? Почему 'A' по своей сути лучше, чем' M (:, 1) '? За исключением того факта, что вы не можете перебирать «A, B, C, ...», не прибегая к какому-то неприятному коду ... – beaker
Мне нужно это, потому что векторы имеют особое значение, и мне нужно выбрать позже подмножество в соответствии с именем переменной. Если я использую индексы, то я не знаю, каково их значение, поскольку нет имени переменной –