С Новым годом! Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/55: Рейтинг темы: голосов - 55, средняя оценка - 4.64
2 / 2 / 2
Регистрация: 10.05.2010
Сообщений: 63
1

Поиск максимального,минимального, среднего элемента

18.10.2012, 21:49. Показов 11027. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Необходимо найти минимальный,средний и максимальный элемент. Заранее спасибо!
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
%Чтение исходного изображения и вывод его на экран.
I=imread('mdb002.bmp');
imshow(I);
%Построение гистограммы исходного изображения.
figure, imhist(I);
avg=0.0;
[H W]=size(I);
sizeim=H*W;
for i=0:1:H
    for j=0:1:W
        sum=sum+I[i,j];
    end
end
avg=sum/size;
%Контрастирование исходного изображения.
I=imadjust(I, [0 75]/255, [ ], 1);
%Вывод преобразованного изображения на экран.
figure, imshow(I);
%Вывод гистограммы преобразованного изображения.
figure, imhist(I);
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.10.2012, 21:49
Ответы с готовыми решениями:

Поиск минимального и максимального элемента в матрицах
Нужно найти минимальный элемент матрицы А произвольной размерности и максимальный элемент матрицы B...

Поиск максимального элемента и индекса в матрице
Добрый вечер, помогите пожалуйста реализовать решение данного задания на Mathcad/Matlab. Алгоритм...

Поиск максимального элемента в матрице, при этом не использовать стандартную функцию
Набрать функцию в Matlab нахождение максимального элемента в матрице, при этом не использовать...

Нахождение минимального и максимального значения больше нуля в векторе
Здравствуйте. Помогите пожалуйста реализовать нахождение в рандомном векторе (например, x=): -...

10
5243 / 3571 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
19.10.2012, 16:12 2
Лучший ответ Сообщение было отмечено как решение

Решение

Что это за безумие?
Matlab M
1
2
3
4
5
for i=0:1:H
    for j=0:1:W
        sum=sum+I[i,j];
    end
end
В матлабе сумма считается одной ф-цией sum и квадратные скобки какбэ намекают, что этот кусок из С-программы, поэтому он будет ругаться на данную запись, а чтобы найти сумму всех элементов матрицы изображения:
S = sum(I( : ));
И в этой строке avg=sum/size; матлаб будет ругаться, т.к. sum и size это имена встроенных ф-ций! т.е. нужно все это дело переобозвать
Не сильно загрузил? ну тогда держи ответ на свой вопрос:
Matlab M
1
2
3
4
5
6
7
8
9
10
clear;
clc;
 
I = randn(400,400);
imshow(I);
Imax = max(I( : ));
Imin = min(I( : ));
tmp = abs(I - (Imin+Imax)/2);
% немного магии :wizard:
Imid = I( find( tmp==min(tmp( : )), 1 ) ); % наиболее близкий к среднему
Дело в том, что среднего теоретически https://www.cyberforum.ru/cgi-bin/latex.cgi?I_{cp}  = \frac{I_{max} + I_{min}}{2} элемента может не быть в матрице,поэтому мы ищем элемент из матрицы, который наиболее близок к нему!
3
2 / 2 / 2
Регистрация: 10.05.2010
Сообщений: 63
20.10.2012, 13:41  [ТС] 3
Все объяснил предельно ясно!спасибо!

Добавлено через 23 минуты
Выдается ошибка:
Matlab M
1
2
3
4
5
6
7
??? Error using ==> +
Function '+' is not defined for values of class 'uint8'.
 
Error in ==> E:\nirs\Untitled.m
On line 7  ==> tmp = abs(I-(Imin+Imax)/2);
 
>>
Что с ней делать? В инете предлагается перевести в тип double(I=double('mdb002.bmp')), но опять же выдает следующую ошибку

Matlab M
1
2
3
4
5
6
7
??? Error using ==> -
Matrix dimensions must agree.
 
Error in ==> E:\nirs\Untitled.m
On line 6  ==> tmp = abs(I-(Imin+Imax)/2);
 
>>
0
301 / 214 / 7
Регистрация: 16.10.2012
Сообщений: 485
20.10.2012, 14:13 4
Там опечатка вкралась. Вместо tmp = abs(I - (Imin+Imax)/2); нужно tmp = abs((Imin+Imax)/2);
0
5243 / 3571 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
20.10.2012, 15:27 5
sova_f, нет там нет опечатки. Единственное, там I - матрица, а из нее вычитается число, поэтому результат также матрица. С телефона трудно разобраться. Может поможет:
tmp = abs( I( : ) - (Imax+Imin)/2 ); но не уверен, т.к. в этом случае будет ошибка в след. строке при нахождении элемента матрицы I из вектора tmp. (они должны быть подобны, т.е. иметь одинаковый размер).
Смысл матрицы tmp в том, что это матрица I из которой вычли теоретически среднее, поэтому наиболее близкий элемент к среднему стал ближе всего к нулю, т.е. модуль его минимальный (поэтому для его выявления берем еще модуль abs). Далее ф-цией find находим координаты этого минимального по модулю элемента и находим значение элемета матрицы I с такими координатами. (вооо, а в матлабе это всего 2 строки!)
Еще ошибка может вылазить, если Imax и Imin каким-то образом оказались не числами, а массивами! Надо проследить.
1
301 / 214 / 7
Регистрация: 16.10.2012
Сообщений: 485
20.10.2012, 17:18 6
Ну тогда можно tmp1=find(tmp<=Iср), а потом max(tmp1) - средний элемент массива. Не? Т.е. средний элемент массива =max(find(tmp<=Icp)) ?

Добавлено через 13 минут
А не, не так. find вернет индексы элементов, которые меньше Icp. А средний будет max(I(tmp(:,2,: ))), где tmp1(:,2,: ) матрица индексов из массива I

Добавлено через 26 минут
Matlab M
1
2
3
4
5
Imax=max(I)
Imin=min(I)
Icp_t=(Imax+Imin)/2;
tmp=find(I<=Icp_t);
Icp=max(I(tmp))
И для наглядности рисуем
Matlab M
1
2
3
4
5
6
ind=1:length(I);
hold on;
plot(ind,I,'b*')
plot(find(I==Imax),Imax,'r^')
plot(find(I==Imin),Imin,'rv')
plot(find(I==Icp),Icp,'ro')
1
5243 / 3571 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
20.10.2012, 17:36 7
sova_f да, так тоже красиво! :)
Только, нужно понимать, что если I - матрица, то max(I) - вектор-строка, в котором каждый элемент равен максимуму из соотв. столбца, а не число! это же относится и к ф-ции min. Поэтому, вероятно, и вылетает ошибка, когда из матрицы I пытается вычесть полусумму векторов.
В этом случае нужно либо писать: Imax = max( I(:) ) или Imax = max( max(I) ) (часто в первом случае двоеточие и скобку редактор сообщений форума воспринимает как смайл!) и следить за их значением.
0
301 / 214 / 7
Регистрация: 16.10.2012
Сообщений: 485
20.10.2012, 17:56 8
согласна. Многомеры не прверила - лень ))))
0
2 / 2 / 2
Регистрация: 10.05.2010
Сообщений: 63
20.10.2012, 18:26  [ТС] 9
У меня те же самые ошибки, работаю с изображением. Накидала следующий код, выдает результаты. Как думаете является ли это верным?
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
%Чтение исходного изображения и вывод его на экран.
I=imread('mdb032.bmp');
imshow(I);
 
for i=1:length(I)
     Imax = max(I( : ));
     Imin = min(I( : ));
     Iavg = mean(I( : ));
    end;
end;
Imax
Imin
Iavg
0
301 / 214 / 7
Регистрация: 16.10.2012
Сообщений: 485
20.10.2012, 18:42 10
а киньте сюда свою матрицу, попробовать (матфайлом или картинка, прикрепленным файлом)

Добавлено через 5 минут
А ларчик просто открывался... Уточните, что имел в виду преподаватель. Mean - это среднее арифметическое всех элементов массива. А мы тут напридумывали среднее между максимальным и минимальным )))))
1
5243 / 3571 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
20.10.2012, 19:04 11
Хе, мы тут карячились, выискивали средний элемент, а нужно было найти усредненное значение! :D
Да, так можно только цикл убери, оставь
Imax = max( I(:) )
Imin = min( I(:) )
Iavg = mean( I(:) )
Без ";", чтобы значения выводились.
Но что бы понять похожи они на правду или нет, ты хотя бы напиши результат ;)

Добавлено через 21 минуту
Немудрено было перепутать, коль название темы "Поиск... среднего элемента" ;)
2
20.10.2012, 19:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.10.2012, 19:04
Помогаю со студенческими работами здесь

Подсчитать: каждое число, меньшее среднего арифметического минимального и максимального элементов, умножить на
Дан вектор чисел произвольной длины. Используя программный фрагмент, подсчитать: каждое число,...

Найти сумму минимального и максимального элемента
Добрый вечер! 1)Дана матрица 6х6.Найти сумму минимального и максимального элемента 3-ей строки и...

нахождение минимального и максимального элемента в каждом столбце матрицы
Организовать нахождение минимального и максимального элемента в каждом столбце матрицы случайных...

Перестановка максимального и минимального элемента в главной диагонали матрицы случайных чисел
Создать матрицу и заполнить её случайными числами. Поменять местами максимальный и минимальный...

В матрице все элементы, модули которых равны модулям максимального или минимального элемента, заменить значением y
В матрице все элементы, модули которых равны модулям максмального или минимального элемента,...

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


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

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