| imho.ws |
![]() |
|
|
|
# 1 |
|
Junior Member
Регистрация: 27.01.2005
Адрес: Пенза-City
Сообщения: 68
![]() |
Метод медианной фильтрации
Пожалуйста помогите сделать вот такое задание:
Разработать программу сглаживания экспериментальных данных по методу медианной фильтрации, суть которого заключается в том, что значение каждого элемента массива Yi заменяется на среднее по величине значение из ряда Yi-1, Yi и Yi+1. Использовать функции ввода данных, сглаживания, вывода результатов. Это надо сделать в Visual C++ 6.0, в которой я ничего не понимаю.. надеюсь - пока. Помогите пожалуйста кто может!! Буду очень благодарен!
|
|
|
|
|
# 2 | |
|
Junior Member
Регистрация: 11.10.2005
Сообщения: 63
![]() |
Вообще-то суть немного другая:
http://www.chip-news.ru/archive/chipnews/199908/29.html Тогда: Цитата:
|
|
|
|
|
|
# 4 |
|
Junior Member
Регистрация: 02.11.2003
Адрес: г. Таганрог
Сообщения: 63
![]() |
С позволения _LYNX_, я допишу комментарий к его программе
![]() Надеюсь я не нарушу его авторских прав ![]() vector<float> input_arr, output_arr; /*входной и выходной вектор (массив), способный изменять количество элементов, во время выполнения программы, см. подробнее STL */ //Заполняем входной массив for (...) { input_arr.push_back(f); /*функция push_back, является функцией-членом класса vector, и добавляет в конец вектора новый элемент f.*/ } int len=input_arr.size(); /*size - также является функцией-членом класса vector и определяет размер вектора*/ for(int i=0;i<len+2;++i){ int a1=0, a2=0, a3=0, g; if(i>1)a1=input_arr[i-2]; if(i>0&&i<len+1)a2=input_arr[i-1]; if(i<len)a3=input_arr[i]; /*Надеюсь выше всё понятно */g=(a1>a2)?((a3>a1)?a1a3>a2)?a3:a2)(a3>a2)?a2a3>a1)?a3:a1); /*А в этой строке переменной g присваивается значение, вычисляемое на базе логических сравнений. оператор '?' трактуется следующим образом: "если выражение (a1>a2) истино, тогда переменной g присвоить значение находящееся до символа ':', если выражение ложно - после символа ':' " Короче говоря: результат = выражение ? выражение1 : выражение2 если результат == true, тогда результат=выражение1 иначе - результат=выражение2 ИМХО очень удобная конструкция!*/ output_arr.push_back(g);//Здесь я думаю всё ясно } ... //Дерзай
__________________
Америка, Америка - это красиво, но Россия вот где есть СИЛА!!! Последний раз редактировалось Rundll; 14.05.2006 в 17:13. |
|
|
|
|
# 5 | |
|
Junior Member
Регистрация: 27.01.2005
Адрес: Пенза-City
Сообщения: 68
![]() |
Цитата:
Пасибо. ЩАс вот поставил VC++.. мож че и выйдет )Буду стараться ![]() |
|
|
|
|
|
# 7 |
|
Junior Member
Регистрация: 27.01.2005
Адрес: Пенза-City
Сообщения: 68
![]() |
Вопрос:
Как мне построчно читать из Edit'а (в Visual C++) числа (в каждой строке одно число) и записывать их в массив, колво элементво которого = количеству строк в Edit'е. 2Visual C++, у меня слов нет: какой ты странный... брррр
|
|
|
|
|
# 10 |
|
Junior Member
Регистрация: 27.01.2005
Адрес: Пенза-City
Сообщения: 68
![]() |
Ничерта не получается..
Завтра собирался сдавать.. в пятницу уже уезжаю.. в воскресенье уже вылет... так что - пипец.. ПОмогите пожалуста!! Очень прошу!!! Я создал форму. Осталось только чтоб при нажатии на кнопку1 заполнялся ListBox1 случайными числами и соответственно - массив. При нажатии на вторую кнопку этот массив сортировался.. и выводился в ListBox2. Очень прошу. Помогите!! ![]() Я MFC использую... это чтото меняет?
|
|
|
|
|
# 11 |
|
Junior Member
Регистрация: 11.10.2005
Сообщения: 63
![]() |
Что-то вроде
Код:
vector<int> input_arr, output_arr;
======
void CMy3_1Dlg::OnAddBut()
{
char buf[20];
input_arr.clear();
m_WasList.DeleteAllItems();
//Заполняем массив
for(int i=0;i<10;i++){
input_arr.push_back(i);
itoa(i,buf,10);
m_WasList.InsertItem(i,buf);
}
}
void CMy3_1Dlg::OnSortBut()
{
/* Как-то сортируем */
output_arr.clear();
m_NowList.DeleteAllItems();
char buf[20];
int len=output_arr.size();
for(int i=0;i<len;i++){
itoa(output_arr[i],buf,10);
m_NowList.InsertItem(i,buf);
}
}
|
|
|