Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/40: Рейтинг темы: голосов - 40, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 05.04.2015
Сообщений: 45

Работа с массивом ячеек cell

19.02.2017, 08:10. Показов 7778. Ответов 5
Метки cell (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. возникла необходимость поработать с бинарными числами разной длины, а так как сделать это, не изменив размер числа удобнее всего используя массив ячеек, решил освоить для себя этот новый тип.
массив имеет следующий вид:
Кликните здесь для просмотра всего текста
{[1 0 1]}
{[1 1]}
...
{[1 1 0 1 0 1 1]}
...

Возникла пара не понятных, для меня, аспектов:
1) как индексно обратиться к содержимому?
мне нужно знать размер данных, скажем, в первой и второй ячейке (сейчас это значение равно 3 + 2 = 5);

2) как индексно присвоить содержимое ячеек скажем вектору строке?
мне нужно получить, например, линейный массив data = [1 0 1 1 1] являющийся конкатенацией первой и второй ячейки.

Важное условие: как сделать все описанное например в цикле, мне известно.
Кликните здесь для просмотра всего текста

Matlab M
1
2
3
4
lengthCell = 0;
for k = 1 : 2
    lengthCell = lengthCell + length(cellArray{k});
end
Matlab M
1
2
3
4
data = [];
for k = 1 : 2
    data = [data; cellArray{k}];
end

Вопрос в том - как обойтись без цикла, максимально упростив код?
Прошу опытных читателей о помощи, и заранее спасибо!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.02.2017, 08:10
Ответы с готовыми решениями:

Как обработать на GPU данные из массива ячеек (cell)?
Здравствуйте, Имеется массив ячеек (cell), в каждой ячейке лежит матрица А. Для каждой матрицы необходимо выполнить: ...

Как работать с массивом cell array (сортировать и искать количество нужных элементов)
Здравствуйте, уважаемые форумчане! Помогите пожалуйста разобраться как искать сумму нужных элементов в массиве cell. я экспортирую...

Работа с массивом ячеек
Есть большой диапазон ячеек с введеными цифровыми значениями, необходимо выполнить деление всех значений на 1000, не обрабатывая отдельно...

5
Модератор
 Аватар для Centurio
1765 / 1610 / 541
Регистрация: 13.09.2015
Сообщений: 5,629
19.02.2017, 10:23
bourboniada, так вы бы создали один массив ячеек вместо нескольких для каждого вектора. Тогда бы обращение к элементам было бы гораздо проще:
Matlab M
1
2
3
A={[1 0 1],[1 1],[1 1 0 1 0 1 1]};
dat=[A{1},A{2}]; % конкатенация 1-й и 2-й ячеек
L=length(dat); % общая длина 1-й и 2-й ячеек
1
0 / 0 / 0
Регистрация: 05.04.2015
Сообщений: 45
19.02.2017, 10:57  [ТС]
Centurio, - спасибо за помощь, но данное решение неприменимо. Массив ячеек, на самом деле, задается так как Вы и описали. Дело в том, что мне заранее не известны номера выбираемых ячеек.
Приведу пример на основе обычных массивов:
Matlab M
1
2
3
dataSet = [1; 3; 0; 8; 9; 3]; % заданная таблица определенных цифр
inquiry = randi([1, length(dataSet)], 1, 3); % заранее неопределенный запрос трех чисел из таблицы dataSet
answer = dataSet(inquiry); % конкатенация и выведение данных в одной строке
При работе с массивами ячеек возможно мне понадобиться заранее выделять память для массива answer
поэтому был задан вопрос №1.
0
Модератор
 Аватар для Centurio
1765 / 1610 / 541
Регистрация: 13.09.2015
Сообщений: 5,629
19.02.2017, 15:49
bourboniada, а числа в dataSet должны ещё предварительно преобразовываться в двоичный вид?
0
0 / 0 / 0
Регистрация: 05.04.2015
Сообщений: 45
19.02.2017, 16:11  [ТС]
Работаю я с ними в двоичном виде. Тут то вся загвоздка и кроется. Ведите ли, ранее числа хранились в десятичном виде а в момент вызова процедуры преобразовывались командой de2bi в линейный массив бинарных чисел. С моей точки зрения это не эффективно по быстродействию.
Поэтому решено было работать с массивом dataSet содержащего изначально бинарный код. Проблема в том, что в обычных массивах длина всех строк и столбцов фиксирована.
[1 0 1 0 0 0 0]
[1 1 0 0 0 0 0]
...
[1 1 0 1 0 1 1]
...
Вместо числа 1 0 1 - получаем число 1 0 1 0 0 0 0 0;
Что бы хранить бинарный код не изменяя его длину, я решил использовать массивы ячеек.
таким образом имеем массив A={[1 0 1],[1 1],[1 1 0 1 0 1 1]}; и две задачи которые я пока не могу решить в работе с ним...
0
Модератор
 Аватар для Centurio
1765 / 1610 / 541
Регистрация: 13.09.2015
Сообщений: 5,629
19.02.2017, 16:56
bourboniada, тогда без цикла не обойтись.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.02.2017, 16:56
Помогаю со студенческими работами здесь

MSFlexGrid - работа с блоком ячеек (читай с массивом)
Как в MSFlexGrid можно определить, что выделен блок ячеек? Как посчитать количество ячеек в блоке? Как работать вообще с массивом ячеек?...

Word -> Различный Aligment (влево-вправо) для разных колонок или ячеек(cell) Word-таблицы?
Как пограммно из VBA при формирования документа сделать различный Aligment (влево-вправо-по центру)для различных колонок (Column) или...

Запрет изменения формата ячеек при работе с массивом
Нашел на просторах сети подходящую функцию: Function ArrAutofilterEx(ByRef arr, ParamArray args() As Variant) As Variant '...

Работа с массивом
Ребят помогите есть массив надо сделать из него массив в виде Не подскажите как сделать

Работа с массивом
Задача: Есть ли элемент оканчивающийся на 3? Program pr3; const n = 10; type MAS = array of integer; var a:MAS; i, k: integer; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru