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

Определение коэффициентов для аппроксимации сигнала методом наименьших квадратов

14.06.2019, 17:58. Показов 2720. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго вечера!

Дано:
Известен кусочек сигнала F(x).
F.mat.zip
Этот кусочек описывается следующей формулой:


Найти:
Необходимо найти сигму1 и сигму2 для аппроксимации исходного сигнала методом наименьших квадратов.

Решение:
По графику сигнала F(x) понятно, что A1=0.66, A2=-0.86 и mu1=1, mu2=28. А вот с сигмами проблема. Никак не могу понять, как тут правильно применить метод наименьших квадратов.


Подскажите пожалуйста, как решить такую задачку? Буду очень признателен. Спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.06.2019, 17:58
Ответы с готовыми решениями:

Графическая иллюстрация аппроксимации методом наименьших квадратов зависимости
Помогите решить задачу, в шарпе ничего не понимаю, а решить как-то надо( Вариант 5 Написать Windows-приложение — графическую...

Расчет коэффициентов полинома методом наименьших квадратов
Помогите, пожалуйста, с заданием. Рассчитать коэффициенты полинома y={a}_{m}{x}^{m}+{a}_{m-1}{x}^{m-1}+...+{a}_{1}x+{a}_{0} методом...

Функция логарифмической аппроксимации значений по методу наименьших квадратов
пожалуйста помогите написать программа на паскале

18
 Аватар для nuHrBuH
483 / 427 / 205
Регистрация: 04.03.2011
Сообщений: 1,259
14.06.2019, 18:39
Шо на щот fit() (curve fitting toolbox)? А как Вы нашли A1, A2, mu1, mu2?
0
0 / 0 / 0
Регистрация: 09.06.2019
Сообщений: 7
14.06.2019, 23:01  [ТС]
Расскажу подробнее что я делаю.

У меня есть отсчеты (а точнее их 250) реального сигнала ЭКГ (A_source). A_source.mat.zip

Моя цель - аппроксимировать этот сигнал суммой экспонент. Действую по следующему алгоритму:
1. Определяю количество составляющих в итоговой аппроксимации:
а) нахожу точки экстремума ряда;
б) по количеству точек экстремумов определяю количество составляющих, по каждой точке экстремума — коэффициент сдвига µ соответствующей экспоненты.
2. Коэффициенты вершин А временно приравниваю к значению ряда в точках экстремума.
3. Определяю коэффициенты масштаба σ:
а) ряд разбиваю на сегменты — от начала до первой точки экстремума, от первой до второй и т.д.
б) предполагаю, что на значения ряда в каждом сегменте влияет не более 2 экспонент;
в) с помощью метода наименьших квадратов рассчитываю оба (или один в случае краевых сегментов) коэффициента масштаба σ.

Итоговая функция аппроксимирующая исходный сигнал выглядит так:
0
 Аватар для nuHrBuH
483 / 427 / 205
Регистрация: 04.03.2011
Сообщений: 1,259
15.06.2019, 11:43
Каждый кусочек между точками Вы хотите аппроксимировать двумя экспонентами?

Сплайн экспонентами?
0
0 / 0 / 0
Регистрация: 09.06.2019
Сообщений: 7
15.06.2019, 15:47  [ТС]
nuHrBuH,
Каждый кусочек между точками Вы хотите аппроксимировать двумя экспонентами?
Да. Но в случае краев, только одной.

Как я понимаю, первая точка экстремума определена ошибочно, поэтому смотрю участок 0 - 2 точка экстремума из графика. (0:51 диапазон отсчетов).

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
%известный сигнал
x=1:250;
load('A_source');
y=A_source;
 
%поиск экстремумов
yd = diff(y); 
yds = sign(yd); 
iy = (yds(1:end-1)~=yds(2:end)); 
mask(2:length(iy)+1) = iy; 
ind = find(mask); 
 
%взятие первого интервала
y1=y(1:ind(2))+0.21; % +0.21 чтобы y был положительным
x1=1:ind(2);
 
%интерполяция заданной функцией
ftype1 = fittype('a1*(exp(-(x-b1).^2*c1))');
fresult1 = fit(x1',y1',ftype1);
fy1 = fresult1.a1*(exp((-x-fresult1.b1).^2*fresult1.c1));
 
figure(1)
plot(1:ind(2),fy1(1:ind(2))-0.21) % -0.21 чтобы вернуть на место
Но почему то:
- вычисления производятся 1 из 10 раз
- а когда все же матлаб интерполирует функцию, fy1(x) вообще не то, чего ожидаю.

Подскажите, где я ошибаюсь?
0
 Аватар для nuHrBuH
483 / 427 / 205
Регистрация: 04.03.2011
Сообщений: 1,259
15.06.2019, 19:20
Можно попробывать стартовые значения для коэффициентов задавать
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
%взятие первого интервала
y1=y(1:ind(2));         % я начал с нуля
x1=(1:ind(2))/50;       % 0 .. 2
 
%интерполяция заданной функцией
opt = fitoptions('Method','NonlinearLeastSquares',...
               'Lower',[-1 0 0],...             % нижняя граница [a1 b1 c1]
               'Upper',[1 10 10],...            % верхняя граница [a1 b1 c1]
               'StartPoint',[-0.01 5 0.001]);   % стартовые
func = 'a1*(exp(-(x-b1).^2*c1))';
ftype1 = fittype(func,'options',opt);
F1 = fit(x1',y1',ftype1)
fy1 = F1(x1);
Экструмум можно искать с помощью findpeaks()
1
0 / 0 / 0
Регистрация: 09.06.2019
Сообщений: 7
15.06.2019, 22:43  [ТС]
У меня получилось полностью аппроксимировать известный сигнал с помощью Curve Fitting Toolbox. Немного покрутил граничные значения для коэффициентов и все заработало.

Результат сгенирировал в код:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function [fitresult, gof] = createFit(x, A_source)
 
%% Fit: 'untitled fit 1'.
[xData, yData] = prepareCurveData( x, A_source );
 
% Set up fittype and options.
ft = fittype( 'a1*exp(-(x-50).^2.*(b1*(x<=50)+c1*(x>50)))+a2*exp(-(x-83).^2.*(b2*(x<=83)+c2*(x>83)))+a3*exp(-(x-201).^2.*(b3*(x<=201)+c3*(x>201)))', 'independent', 'x', 'dependent', 'y' );
opts = fitoptions( 'Method', 'NonlinearLeastSquares' );
opts.Display = 'Off';
opts.Lower = [-1 -1 -1 0 0 0 0 0 0];
opts.StartPoint = [0.826998331558064 0.242516308885001 0.56499609309486 0.700579510055142 0.29092573719343 0.489619389546545 0.759831815719588 0.290860330609039 0.989740142062215];
opts.Upper = [1 1 1 1 1 1 1 1 1];
 
% Fit model to data.
[fitresult, gof] = fit( xData, yData, ft, opts );
 
% Plot fit with data.
figure( 'Name', 'untitled fit 1' );
h = plot( fitresult, xData, yData );
legend( h, 'A_source vs. x', 'untitled fit 1', 'Location', 'NorthEast' );
% Label axes
xlabel x
ylabel A_source
grid on
Теперь появился другой вопрос. Как из другого .m файла вызвать функцию в сгенирированном файле?
Делаю так:
Matlab M
1
2
3
4
5
clear, clc
load('A_source');
x=1:250;
 
A_approx = createFit(x, A_source);
Но ничего не работает (
0
 Аватар для nuHrBuH
483 / 427 / 205
Регистрация: 04.03.2011
Сообщений: 1,259
15.06.2019, 23:10
Название файла совпадает с названием функции (createFit)?
1
0 / 0 / 0
Регистрация: 09.06.2019
Сообщений: 7
15.06.2019, 23:26  [ТС]
Теперь совпадает)
Спасибо огромное!
0
533 / 438 / 47
Регистрация: 17.07.2013
Сообщений: 2,236
16.06.2019, 08:32
Цитата Сообщение от iiivanov Посмотреть сообщение
граничные значения для коэффициентов
Доверительные интервалы обязательно проанализируйте, в curve fit это совсем просто.
А уж если совсем "по взрослому", то попробуйте аппроксимацию нейронной сетью. Будет и "круть" и "жуть"!
0
416 / 200 / 69
Регистрация: 20.01.2019
Сообщений: 714
16.06.2019, 09:48
Nick07, А в чем смысл использования нейронной сети для одного известного набора данных?
0
533 / 438 / 47
Регистрация: 17.07.2013
Сообщений: 2,236
16.06.2019, 18:11
Цитата Сообщение от AlMih Посмотреть сообщение
А в чем смысл
А не в чем, прикольно, ну и тренинг для мозгулек
0
416 / 200 / 69
Регистрация: 20.01.2019
Сообщений: 714
16.06.2019, 18:23
Неубедительно
0
533 / 438 / 47
Регистрация: 17.07.2013
Сообщений: 2,236
16.06.2019, 19:51
А в чём смысл расчетов по 250-и точкам? Достоверной информации не получишь. Только продемонстрировать своё умение жонглировать с цифирками. Ну тогда уж если демонстрировать, так демонстрировать владение техникой машинного и глубокого обучения.
0
416 / 200 / 69
Регистрация: 20.01.2019
Сообщений: 714
16.06.2019, 20:37
Nick07,
Цитата Сообщение от Nick07 Посмотреть сообщение
А в чём смысл расчетов по 250-и точкам? Достоверной информации не получишь. Только продемонстрировать своё умение жонглировать с цифирками. Ну тогда уж если демонстрировать, так демонстрировать владение техникой машинного и глубокого обучения.
Насчет освоения техники машинного и глубокого обучения на 250-ти точках - насмешил.
Это как если бы кто-то решил стать штангистом и упорно тренировался поднимая, раз в день, канцелярскую скрепку...
1
533 / 438 / 47
Регистрация: 17.07.2013
Сообщений: 2,236
16.06.2019, 21:23
Цитата Сообщение от AlMih Посмотреть сообщение
- насмешил
Уже какой-то результат. Вчера видел набор для обучения из 2-х десятков чисел и сеть очень хорошо обучилась.
0
416 / 200 / 69
Регистрация: 20.01.2019
Сообщений: 714
16.06.2019, 22:18
Nick07, Так пиши статью в Найчур или Сайнс - что можно обойтись без глубокого обучения, достаточно всего 2-х десятков чисел и сеть очень хорошо обучилась! Станешь знаменитым ученым, равным Эйнштейну. Забудешь нас, убогих, конфа потеряет великого экперда...
0
16.06.2019, 23:05

Не по теме:

AlMih, Nick07, прошу прекратить флуд и взаимные нападки.

0
533 / 438 / 47
Регистрация: 17.07.2013
Сообщений: 2,236
17.06.2019, 08:49
Цитата Сообщение от AlMih Посмотреть сообщение
статью в
Так уже давно все опубликовано. Уже в учебниках целые параграфы о глубоком обучении на малых выборках.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.06.2019, 08:49
Помогаю со студенческими работами здесь

График погрешности для аппроксимирующей функции методом наименьших квадратов
Помогите найти погрешность и сделать график погрешности для аппроксимирующей функции. Погрешность должна находиться как по формуле на...

Методом наименьших квадратов вычислить параметры для заданной группы точек на плоскости
Программисты, пожалуйста помогите!!! через 2 недели сдать надо, я незнаю как делать(( Нам необходимо создать программу, которая методом...

Аппроксимация функций. Сглаживание опытных данных методом наименьших квадратов и решение системы линейных уравнений методом Гаусса
Нужна помощь:wall:, пишу программу аппроксимация функций. Сглаживание опытных данных методом наименьших квадратов и решение системы...

методом наименьших квадратов
Помогите решить проблему(описание в файле маткад). Когда считаю для 8 экспериментальных данных то все получается а когда для 32 то нет...

методом наименьших квадратов
Доброго времени суток.Если кому не трудно помогите с этим заданием. Найти методом наименьших квадратов коэффициенты линейного уравнения,...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru