Мне нужно объединить некоторые элементы в один элемент матрицы строк в MATLAB. Например, моя матрица - [1 2 3 4 5 6 7 8]
. Я хочу преобразовать матрицу как [1234 5678]
. Пожалуйста, помогите мне сделать это.Как объединить некоторые элементы в один элемент матрицы строк
ответ
Вы можете сделать это следующим образом:
a=[1 2 3 4 5 6 7 8];
vec1=a(1:4) %put a suitable number here
vec1=num2str(vec1);
vec1(ismember(vec1,' ')) = [];
vec1=str2double(vec1);
Аналогично, выполните описанную выше последовательность операций на второй половине вектора и просто сцепить их в окончательный вектор.
Примечание. Это решение работает только для вектора строк, как вы упомянули в вопросе (вы упомянули матрицу строк, но я предполагаю, что это то, что вы имели в виду).
От этого зависит. Если вы можете гарантировать, что ваша строка будет всегда кратна 4, вы можете сделать следующее:
reshape(sum(bsxfun(@times,reshape(Q',4,[])',[1000,100,10,1]),2),[],size(Q,1))';
Что это делает reshape
матрица следующим образом:
[1 2 3 4 5 6 7 8 -> [1 2 3 4
8 7 6 5 4 3 2 1] 5 6 7 8
8 7 6 5
4 3 2 1]
Затем множественным каждая строка по [1000,100,10,1]
и сумма каждой строки:
[1 2 3 4 [1000 200 30 4 [1234
5 6 7 8 -> 5000 600 70 8 -> 5678
8 7 6 5 8000 700 60 5 8765
4 3 2 1] 4000 300 20 1] 4321]
Наконец мы перекроить матрицу снова, чтобы вернуться к первоначальной форме.
[1234 [1234 5678
5678 -> 8765 4321]
8765
4321]
здесь идет один лайнер! :) –
Довольно длинный, хотя. Исправлена небольшая ошибка во внешнем вызове с изменением формы и немного упрощена внутренняя. –
Приветствую вас, я должен признать, что я не знал о пустом упрощении. Сегодня я узнал что-то новое. – MrAzzaman
сначала определить значения в числовом массиве:
a = [1 2 3 4 5 6 7 8];
Следующая преобразовать в строку:
b = num2str(a);
Теперь удалить все пробелы:
b(find(b == ' ')) = '';
Вставить пустое пространство посередине d затем преобразовать обратно в числовой массив (я думаю, что это то, что вы хотите()?):
c = str2num([b(1:4),' ',b(5:end)]);
Так что
>> c(1)
ans =
1234
>> c(2)
ans =
5678
Edit: Добавлен 'конец', чтобы покрыть произвольный диапазон.
Обратите внимание, что это даст неожиданные результаты, если числа больше 9. –
Да, ваше право, поэтому я добавил «конец», чтобы покрыть произвольный диапазон. Мне все еще не совсем понятно, как обобщить точку «расщепления», только с информацией, которую мы имеем. Благодарю. –
Рассмотрим следующую анонимную функцию для обобщенного числового решения для комбинирования одной цифры:
combineDigits = @(x) x*(10.^(length(x)-1:-1:0)).';
Каждый элемент x
должен быть на [0,9]
(т.е. одной цифры). Для примера ввода:
>> x = [1 2 3 4 5 6 7 8]
x =
1 2 3 4 5 6 7 8
>> x1 = x(1:4); x2 = x(5:end);
>> combineDigits(x1)
ans =
1234
>> combineDigits(x2)
ans =
5678
>>
анонимной функции combinedDigits
может быть применен с любой общей функции полезности, такие как cellfun
, для обработки блоков данных.Например, рассмотрят 2x8
матрицу M
цифр, разделенных в массив 2x2
ячейки 1x4
значных массивы:
>> M = randi(9,2,8)
M =
4 8 6 8 7 7 6 7
9 9 1 9 7 4 2 1
>> Mpartitioned = mat2cell(M,[1 1],[4 4]) % specify ANY valid partitioning here
Mpartitioned =
[1x4 double] [1x4 double]
[1x4 double] [1x4 double]
>> Mcompacted = cellfun(combineDigits,Mpartitioned)
ans =
4868 7767
9919 7421
- 1. Как «объединить» некоторые элементы массива в элемент того же массива?
- 2. Как объединить элементы матрицы в MATLAB
- 3. Как объединить несколько строк в один элемент массива в PERL?
- 4. Как объединить некоторые элементы массива в php?
- 5. Как объединить два элемента в один элемент?
- 6. Как объединить общие элементы в один массив?
- 7. Как преобразовать элементы матрицы в один вектор
- 8. Заменить некоторые элементы матрицы с элементами другой матрицы [Matlab/октава]
- 9. объединить некоторые элементы списка в списке Python
- 10. Объединить несколько строк матрицы в другую матрицу
- 11. Как объединить несколько строк в один
- 12. подставляя некоторые элементы матрицы новыми значениями bash
- 13. Заменить некоторые элементы матрицы с NaN (MATLAB)
- 14. Как условно объединить некоторые элементы в списке в JavaScript?
- 15. Как объединить несколько строк в один
- 16. Как объединить несколько строк в один?
- 17. Выберите некоторые элементы матрицы с матрицей индексирования?
- 18. Элемент media пропускает некоторые элементы в плейлисте
- 19. Сложность: Один матрицы строк/COL перестановка другой матрицы
- 20. XSLT - объединить некоторые элементы и отсортировать их
- 21. Как объединить несколько строк строк в один с помощью панд?
- 22. Как объединить два списка строк в один список строк?
- 23. Как объединить элемент массива строк в массив строк?
- 24. Объединить несколько элементов как один элемент
- 25. объединить два списка в один, используя один на один элемент
- 26. Как объединить все строковые элементы нескольких массивов в один массив?
- 27. как объединить следующие две матрицы?
- 28. Объединить элементы в nanoc
- 29. Как объединить элементы списка
- 30. Объединить несколько строк текстовых документов в один
Может этот случай произойти и что бы вы, как выход быть? '[1: 12; 13: 24]' А как насчет других предположений, которые делали люди? –