0 / 0 / 0
Регистрация: 11.07.2013
Сообщений: 14
1

Можно ли присвоить ячейке диапазон значений?

11.07.2013, 21:02. Показов 6370. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ребят, большая просьба помочь!
В общем необходимо создать 3600 ячеек (это не проблема), каждая ячейка содержит
диапазон значений (например, 0...0,1 сек). Есть массив данных, необходимо определить
какое значение из массива относится к какой ячейке (это проблема)
Буду благодарна за любую помощь...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.07.2013, 21:02
Ответы с готовыми решениями:

Диапазон значений в одной ячейке
Добрый день. Есть две таблицы, нужно вписать тип номера во вторую таблицу, используя данные таблицы...

Как задать диапазон значений ячейке массива ?
procedure zap_vr(i,j,n:longint; var matrix_n:matr); begin for i:=1 to n do for j:=1 to n do ...

Можно ли использовать диапазон значений переменной в select case
можно ли использовать интервалы в select case ? например: Select Case b Case...

Заполнить столбец БД xml, присвоить строчкам идентификаторы, и присвоить каждой ячейке с xml свое значение
Здравствуйте, уважаемые форумчане! Столкнулся со сложностью! мое приложение заполняет БД...

17
461 / 451 / 56
Регистрация: 28.05.2013
Сообщений: 699
11.07.2013, 22:35 2
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
n=3600;
for ik=1:n
a{ik}(1)=(ik-1)/3600; %задали нижний предел в ячейке 
a{ik}(2)=ik/3600; %задали верхний предел диапазона в ячейке 
end % получился масив ячеек a с диапазонами
% я его для примера сделал, у вас конечно свой есть
b=rand(5,3); % и есть какой-то масив b, для которого надобно определить
% к каким ячейкам относятся его элементы
c=zeros(size(b)); %делаем массив с, в элементах которого будут находится
% номера ячеек массива а. Т.е. b(m) находится в диапазоне ячейки массива а с индексом с(m)
for ik=1:numel(b)
for ig=1:n
if a{ig}(1)<b(ik) && b(ik)<a{ig}(2)
c(ik)=ig;
end
end
end
2
0 / 0 / 0
Регистрация: 11.07.2013
Сообщений: 14
11.07.2013, 23:01  [ТС] 3
tvoretsmira, спасибо вам большое! Безмерно благодарна
0
0 / 0 / 0
Регистрация: 11.07.2013
Сообщений: 14
14.07.2013, 19:54  [ТС] 4
С большим массивом не работает, к сожалению. И если не сложно, как сделать счетчик, который бы фиксировал количество попаданий в ячейку
0
461 / 451 / 56
Регистрация: 28.05.2013
Сообщений: 699
15.07.2013, 01:12 5
Цитата Сообщение от EnotikN Посмотреть сообщение
С большим массивом не работает, к сожалению.
Что матлаб пишет? Какая ошибка?

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
n=3600;
for ik=1:n
a{ik}(1)=(ik-1)/3600; %задали нижний предел в ячейке 
a{ik}(2)=ik/3600; %задали верхний предел диапазона в ячейке 
end % получился масив ячеек a с диапазонами
% я его для примера сделал, у вас конечно свой есть
b=rand(5,3); % и есть какой-то масив b, для которого надобно определить
% к каким ячейкам относятся его элементы
c=zeros(size(b)); %делаем массив с, в элементах которого будут находится
% номера ячеек массива а. Т.е. b(m) находится в диапазоне ячейки массива а с индексом с(m)
d=zeros(1,n); %счетчик, который фиксирует количество попаданий в каждую из ячейеек
for ik=1:numel(b)
for ig=1:n
if a{ig}(1)<b(ik) && b(ik)<a{ig}(2)
c(ik)=ig;
d(ig)=d(ig)+1;
end
end
end
0
23 / 20 / 0
Регистрация: 18.06.2013
Сообщений: 83
15.07.2013, 21:18 6
??? Cell contents assignment to a non-cell array
object.

Error in ==> Untitled7 at 3
a{ik}(1)=(ik-1)/3600; %задали нижний предел в ячейке


А можно подобное реализовать через @? Т.е. задать как бы функцию массива А от значений t, вроде:
(жаль, не работает)
Matlab M
1
2
3
4
5
6
A=[0 25 50 90 150 200 220 240 260 300 350 400 440 500 580 600 650 750 850....
    900 1000 1150 1200 1280 1300 1350 1400 1450 1480 1525 1525 1525 1525....
    1500 1490 1460 1450 1400 1375 1350 1340 1315 1300 1275 1250 1225 1200....
    1150 1110 1060 1000 950 900 875 725 600 540 450 400 250 150 90 0 0]; 
t = 0.5:0.5:32; 
B =@(t) A(t);
1
461 / 451 / 56
Регистрация: 28.05.2013
Сообщений: 699
15.07.2013, 21:56 7
Цитата Сообщение от Pigmalion Посмотреть сообщение
??? Cell contents assignment to a non-cell array
object.
Error in ==> Untitled7 at 3
a{ik}(1)=(ik-1)/3600; %задали нижний предел в ячейке
т.е. вы использовали ранее переменную а не как массив ячеек, а как что-то другое (в отличии от того кода что выше приведен).

Цитата Сообщение от Pigmalion Посмотреть сообщение
А можно подобное реализовать через @? Т.е. задать как бы функцию массива А от значений t
Matlab M
1
2
3
4
5
6
7
A=[0 25 50 90 150 200 220 240 260 300 350 400 440 500 580 600 650 750 850....
900 1000 1150 1200 1280 1300 1350 1400 1450 1480 1525 1525 1525 1525....
1500 1490 1460 1450 1400 1375 1350 1340 1315 1300 1275 1250 1225 1200....
1150 1110 1060 1000 950 900 875 725 600 540 450 400 250 150 90 0 0];
t = 0.5:0.5:32;
B =@(x) A(find(x==t))
B(1.5)
Но учтите, это только индексация массива A. Если задать какое-то промежуточное значение, то B вернёт пустой массив. Если надо получать значения функции для промежуточных значений t, то следует выполнить интерполяцию.
2
0 / 0 / 0
Регистрация: 11.07.2013
Сообщений: 14
17.07.2013, 23:24  [ТС] 8
А можно еще вопросик? Задали мы матрицу - в первой строке значения вектора А, во второй строке значения времени t. Т.е. каждому значению времени соответствует элемент вектора А. А теперь вопрос можно ли задать начальное и конечное время и получить соответствующие элементы вектора А. фуххх...
0
461 / 451 / 56
Регистрация: 28.05.2013
Сообщений: 699
17.07.2013, 23:38 9
Можно:
Matlab M
1
2
3
4
5
6
7
8
9
A=[0 25 50 90 150 200 220 240 260 300 350 400 440 500 580 600 650 750 850....
900 1000 1150 1200 1280 1300 1350 1400 1450 1480 1525 1525 1525 1525....
1500 1490 1460 1450 1400 1375 1350 1340 1315 1300 1275 1250 1225 1200....
1150 1110 1060 1000 950 900 875 725 600 540 450 400 250 150 90 0 0];
t = 0.5:0.5:32;
C=[A;t];
B =@(x) C(1,find(x==C(2,:)))
B(0.5)
B(32)
Но мне кажется, что вы что-то намудрили.
1
0 / 0 / 0
Регистрация: 11.07.2013
Сообщений: 14
18.07.2013, 20:18  [ТС] 10
Сейчас попытаюсь объяснить понятнее... Это зависимость угла от времени. У меня есть графическая форма, в которой я должна ввести время начала и время конца и вывести углы на графике.
0
461 / 451 / 56
Регистрация: 28.05.2013
Сообщений: 699
18.07.2013, 23:59 11
Понятно.
Вот тоже самое, только с интерполяцией (т.е. можно находить углы на промежуточных значениях t):
Matlab M
1
2
3
4
5
6
7
A=[0 25 50 90 150 200 220 240 260 300 350 400 440 500 580 600 650 750 850....
900 1000 1150 1200 1280 1300 1350 1400 1450 1480 1525 1525 1525 1525....
1500 1490 1460 1450 1400 1375 1350 1340 1315 1300 1275 1250 1225 1200....
1150 1110 1060 1000 950 900 875 725 600 540 450 400 250 150 90 0 0];
t = 0.5:0.5:32;
pp=pchip(t,A);
B=@(t) ppval(pp,t)
1
0 / 0 / 0
Регистрация: 11.07.2013
Сообщений: 14
20.07.2013, 00:03  [ТС] 12
tvoretsmira, выдает ошибку
Миниатюры
Можно ли присвоить ячейке диапазон значений?  
0
0 / 0 / 0
Регистрация: 11.07.2013
Сообщений: 14
20.07.2013, 00:11  [ТС] 13
tvoretsmira, Можно еще один глупый вопрос? Как записать указанный диапазон в переменную? Если я указываю момент 34 секунда, он мне выдает массив их n-го количества значений, все промежуточные значения между 34 и 35 секундой
0
5241 / 3569 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
21.07.2013, 20:28 14
EnotikN, лапка, а можешь максимально подробно описать задание, что дано и что нужно получить?
Может файлики какие есть, которые прояснят дело?
1
0 / 0 / 0
Регистрация: 11.07.2013
Сообщений: 14
22.07.2013, 21:12  [ТС] 15
Зосима, я уже разобралась
Matlab M
1
B =@(x) C(1,find((x=C(2,:))>34 & (x=C(2,:))<58))
В переменную В запишет все значения углов, когда время изменяется от 34 до 58 сек. Ну а график построить совсем не сложно! Всем, всем, всем кто помог огромное спасибо!!!!
0
5241 / 3569 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
23.07.2013, 06:57 16
Хм... лапка, а эта штуковина у тебя работает?
*меня смущает одновременное присвоение (=) и сравнение(>, <):
x=C( 2,: )>38

И как тебе такой выриант?
Matlab M
1
B = @(a,b) [A( t>=a & t<=b )' , t( t>=a & t<=b )'];
Эта функция принимает два числа - нижний и верхний пределы времени и возвращает двухстолбцовую матрицу B, первый столбец - углы, второй - время Главное не забыть массивы A и t прописать.
1
0 / 0 / 0
Регистрация: 11.07.2013
Сообщений: 14
23.07.2013, 22:18  [ТС] 17
Зосима, код писала по памяти, могла ошибиться. Завтра исправлю) Спасибо ВАМ
0
5241 / 3569 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
23.07.2013, 22:22 18
Солнце, на здоровье!
проверь, работает или нет
1
23.07.2013, 22:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.07.2013, 22:22
Помогаю со студенческими работами здесь

Если значения переменных A и B не равны, то присвоить им максимальное из значений, иначе - присвоить 0
Даны две переменные целого типа Aи B если их значения не равны то присвоить каждой пепеменной...

Если значения переменных не равны, то присвоить им максимальное из значений, иначе присвоить им ноль
Даны две переменные целого типа: A и B. Если их значения не равны, то присвоить каждой переменной...

Присвоить диапазон данных excel массиву
В VBA, работая с объектами excel : range, cells и тд, столкнулся с проблемой, не получается...

Присвоить ячейке адрес сайта
Sub сайт() nID = Range(&quot;N13&quot;) Range(&quot;A1&quot;).Select With...

Присвоить ячейке значение TextBox
Доброго времени суток! Подскажите пожалуйста, как передать значение из поля формы Excel TextBox1 в...

Не получается присвоить объекту Series диапазон данных с листа
Не получается присвоить объекту Series диапазон данных с листа Private Sub...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru