0 / 0 / 0
Регистрация: 10.10.2019
Сообщений: 21

Определить промежутки значений, на которых числа больше 0

10.10.2019, 11:22. Показов 2918. Ответов 14

Студворк — интернет-сервис помощи студентам
Добрый день! Помогите пожалуйста решить задачку по составлению алгоритма. Допустим есть последовательность случайных чисел в количестве 100000 чисел. Они принимают как отрицательные так и положительные значения.
Необходимо:
- Определить промежутки значений на которых числа больше 0.
- На каждом из этих промежутках выявить максимальные значения и свести в отдельный столбец.
- Подсчитать количество промежутков этих чисел и количество максимальных значений.
Заранее спасибо!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.10.2019, 11:22
Ответы с готовыми решениями:

Определить все трехзначные числа, сумма цифр которых больше 10
определить все трехзначные числа,сумма цифр которых больше 10.

Определить произведение элементов, значения которых больше заданного числа
Дан двумерный массив (матрица) размером NxN. 1. Определить произведение элементов, значения которых больше заданного числа F.

Определить количество элементов, значения которых больше заданного числа M
Помогите решить задачку: Задания на одномерные массивы Дан одномерный массив из N элементов. 1. Определить количество элементов,...

14
117 / 83 / 39
Регистрация: 06.01.2013
Сообщений: 274
10.10.2019, 14:40
Лучший ответ Сообщение было отмечено Cansed как решение

Решение

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
clear; close all; clc
 
d = randn(100000,1);
j=1;
k = 1;
for i = 1:length(d)
    if d(i)>0
        db(k,j) = d(i);
        k= k+1;
    else
        j= j+1;
        k = 1;
    end
end
 
D = db(:,sum(db,1)>0); % Промежутки
 
Dmax = max(D); % максимумы
 
NDmax = length(Dmax); % количество промежутков и максимумов
вероятно, есть более элегантное решение...
1
0 / 0 / 0
Регистрация: 10.10.2019
Сообщений: 21
10.10.2019, 15:28  [ТС]
Спасибо! Если Вы хорошо знаете матлаб то у меня есть просьба. Если заинтересует то напишите на ***

 Комментарий модератора 
Правила форума
0
Модератор
 Аватар для Centurio
1756 / 1603 / 535
Регистрация: 13.09.2015
Сообщений: 5,588
10.10.2019, 15:33
Сергей Тетьора, вы проверяли свой код? Меня интересует строка 16
0
117 / 83 / 39
Регистрация: 06.01.2013
Сообщений: 274
10.10.2019, 15:43
Centurio, да, у меня все работает. В 16 строке выбираю столбцы, в которых хотя бы одно не нулевое значение db. Или Вы имеете в виду, что в этих столбцах есть еще и нули?
0
0 / 0 / 0
Регистрация: 10.10.2019
Сообщений: 21
10.10.2019, 19:35  [ТС]
В дополнение к этой задаче:
Можно ли подсчитать количество отсчетов для этих максимумов? Если всем отрицательным значениям присвоить значение 0, но оставить их для подсчета количества отсчетов.

На промежутке положительных значений Dmax имеет значение t1 = 7 и T1 = 13.
Где t1 - это длительность (в отсчетах) импульса Dmax,
а T1 - это период (в отсчетах) импульса Dmaх.
t2 = 5, T2 = 11.
И и так далее для всех 100000 значений. Как правильно написать алгоритм?
Вложения, ожидающие проверки
Тип файла: jpg zeJxA9-XqRM.jpg
Тип файла: png Безымянный.png
0
Модератор
 Аватар для Centurio
1756 / 1603 / 535
Регистрация: 13.09.2015
Сообщений: 5,588
11.10.2019, 06:52
Рисунок от Cansed:
Миниатюры
Определить промежутки значений, на которых числа больше 0  
0
Модератор
 Аватар для Centurio
1756 / 1603 / 535
Регистрация: 13.09.2015
Сообщений: 5,588
11.10.2019, 07:14
Cansed, вам промежутки положительных значений по отдельности надо группировать? Или достаточно определить максимумы в них и найти t и тау?
0
0 / 0 / 0
Регистрация: 10.10.2019
Сообщений: 21
11.10.2019, 12:36  [ТС]
Группировать их не нужно. Нужно для каждого конкретного Dmax найти значения t и тау соответственно. У меня не получается этот алгоритм построить.
Грубо говоря это просто номера строк, их просто как то нужно посчитать для каждого промежутка положительных значений. Но загвоздка в том что если для значения t мы просто считаем количество положительных значений, то для значения тау, которое считается периодом колебаний, нужно считать количество строк с отрицательными значениями.
0
Модератор
 Аватар для Centurio
1756 / 1603 / 535
Регистрация: 13.09.2015
Сообщений: 5,588
11.10.2019, 14:07
Cansed, то есть вам нужно найти только t, тау и максимумы на каждом промежутке?
0
0 / 0 / 0
Регистрация: 10.10.2019
Сообщений: 21
11.10.2019, 14:09  [ТС]
Все верно.
0
0 / 0 / 0
Регистрация: 10.10.2019
Сообщений: 21
11.10.2019, 14:41  [ТС]
На бумаге представляю этот алгоритм таким образом. Если его можно записать в Матлабе то как это сделать?
0
0 / 0 / 0
Регистрация: 10.10.2019
Сообщений: 21
11.10.2019, 21:26  [ТС]
В общем путем проб получилось что-то этакое но пока не работает так как надо. Подскажите кто в этом шарит.
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
d = randn(100000,1);
d = d(:,1);
j=1;
k = 1;
for i = 1:length(d)
    if d(i)>=0 && d(i+1)>=0 || d(i)<0 && d(i+1)<0 || d(i)>=0 && d(i+1)<=0
        db(k,j) = d(i);
        k= k+1;
    else T = k
        j= j+1;
        k = 1;
     end
end;
Добавлено через 1 час 11 минут
Помогите пожалуйста проверить код. В ходе реализации выскакивает ошибка. (Index exceeds the number of array elements).
Как ее убрать? И по существу кода посоветуйте.
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
d = randn(100000,1);
d = d(:,1);
d(d < 0) = [0];
j = 1;
k = 1;
for i = 1:length(d)
    if d(i)>0 && d(i+1)>0 || d(i)==0 && d(i+1)==0 || d(i)>0 && d(i+1)==0
        db(k,j) = d(i);
        k = k+1;
    else T(1,j) = k
        j = j+1;
        k = 1;
     end
end
t = sum(db>0);
Dmax = max(db); % максимумы
0
Модератор
 Аватар для Centurio
1756 / 1603 / 535
Регистрация: 13.09.2015
Сообщений: 5,588
11.10.2019, 22:31
Лучший ответ Сообщение было отмечено Cansed как решение

Решение

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
clear,clc
d = randn(1,100000);
B=d>0;
D=diff(B);
p=find(D>0)+1; % нахождение индексов начал групп положительных значений
n=find(D<0)+1; % нахождение индексов начал групп отрицательных значений
if p(1)>n(1)
   p=[1 p];
end
if p(end)>n(end)
   n=[n length(d)+1];
end
t=n-p; % вычисление продолжительностей групп положительных значений
tau=diff(p); % вычисление периодов положительных значений
 
% Поиск максимумов в группах положительных значений:
L=length(p);
mxs=zeros(1,L);
for I=1:L
mxs(I)=max(d(p(I):n(I)-1));
end
1
0 / 0 / 0
Регистрация: 10.10.2019
Сообщений: 21
12.10.2019, 07:14  [ТС]
Centurio, Спасибо Вам! Все работает очень хорошо. Если я могу чем то Вас отблагодарить, то с радостью это сделаю.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.10.2019, 07:14
Помогаю со студенческими работами здесь

Определить количество элементов массива значения которых больше заданного числа
Одномерный массив из 12 элементов заполнить числовыми значениями. Ввести число К. Определить количество элементов массива, значения...

Определить количество элементов матрицы, значения которых больше заданного числа F
Народ, знаю, что вас бесят подобные темы, но прошу помогите. Начали преподавать VB6, но раньше я его не встречал. Задача такова: Дан...

Определить промежутки, на которых график функции расположен выше графика у=1
Промежутки, на которых график функции y=logx(3x+2)/(x+2) расположен выше графика y=1

Определить цифры, которые находятся рядом и сумма которых больше заданного числа
Как можно решить такое задание : &quot; Ввести из клавиатуры шестизначное число, определить цифры, которые находится рядом и сумма которых...

Определить сумму двухзначных чисел, сумма цифр которых больше заданного числа
Определить сумму двухзначных чисел, сумма цифр которых больше заданного числа. Решил через For. program lab6_2; var...


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

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

Новые блоги и статьи
50 самых полезных примеров кода Python для частых задач
py-thonny 17.06.2025
Эффективность работы разработчика часто измеряется не количеством написаных строк, а скоростью решения задач. Готовые сниппеты значительно ускоряют разработку, помогают избежать типичных ошибок и. . .
C# и продвинутые приемы работы с БД
stackOverflow 17.06.2025
Каждый . NET разработчик рано или поздно сталкивается с ситуацией, когда привычные методы работы с базами данных превращаются в источник бессонных ночей. Я сам неоднократно попадал в такие ситуации,. . .
Angular: Вопросы и ответы на собеседовании
Reangularity 15.06.2025
Готовишься к техническому интервью по Angular? Я собрал самые распространенные вопросы, с которыми сталкиваются разработчики на собеседованиях в этом году. От базовых концепций до продвинутых. . .
Архитектура Onion в ASP.NET Core MVC
stackOverflow 15.06.2025
Что такое эта "луковая" архитектура? Термин предложил Джеффри Палермо (Jeffrey Palermo) в 2008 году, и с тех пор подход только набирал обороты. Суть проста - представьте себе лук с его. . .
Unity 4D
GameUnited 13.06.2025
Четырехмерное пространство. . . Звучит как что-то из научной фантастики, правда? Однако для меня, как разработчика со стажем в игровой индустрии, четвертое измерение давно перестало быть абстракцией из. . .
SSE (Server-Sent Events) в ASP.NET Core и .NET 10
UnmanagedCoder 13.06.2025
Кажется, Microsoft снова подкинула нам интересную фичу в новой версии фреймворка. Работая с превью . NET 10, я наткнулся на нативную поддержку Server-Sent Events (SSE) в ASP. NET Core Minimal APIs. Эта. . .
С днём независимости России!
Hrethgir 13.06.2025
Решил побеседовать, с утра праздничного дня, с LM о завоеваниях. То что она написала о народе, представителем которого я являюсь сам сначала возмутило меня, но дальше только смешило. Это чисто. . .
Лето вокруг.
kumehtar 13.06.2025
Лето вокруг. Наполненное бурями и ураганами событий. На фоне магии Жизни, священной и вечной, неумелой рукой человека рисуется панорама душевного непокоя. Странные серые краски проникают и. . .
Популярные LM модели ориентированы на увеличение затрат ресурсов пользователями сгенерированного кода (грязь -заслуги чистоплюев).
Hrethgir 12.06.2025
Вообще обратил внимание, что они генерируют код (впрочем так-же ориентированы разработчики чипов даже), чтобы пользователь их использующий уходил в тот или иной убыток. Это достаточно опытные модели,. . .
Топ10 библиотек C для квантовых вычислений
bytestream 12.06.2025
Квантовые вычисления - это та область, где теория встречается с практикой на границе наших знаний о физике. Пока большая часть шума вокруг квантовых компьютеров крутится вокруг языков высокого уровня. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru