Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
Старый
Рейтинг: 5.00. Голосов: 2.
Охват точек линией минимальной длинны в MATLAB
Запись от Зосима размещена 06.10.2021 в 09:38 / Записки сумасшедшего шляпника.
Показов 4218 Комментарии 3

Как-то давно писал программку и вот она вновь пригодилась.
Может еще кому будет полезна)
Суть в чем? Есть несколько точек и нужно охватить их всех так, чтобы линия имела минимальный периметр.
По-научному такие линии называются "минимально выпуклая оболочка", почитать о них можно например на хабре. Собственно из этой статьи я и взял алгоритм.
Matlab M
1
2
3
4
5
clear, clc
% случайные точки
N = 10;
x = randn(N,1);
y = randn(N,1);
...
Аватар для Зосима
Старый
МНГС
Запись от simonovada размещена 07.12.2019 в 19:12
Показов 967 Комментарии 0

clear all;
f = @(x,y)(x^2+2.*y^2+(exp(x)).*(exp(y)));%и сходная функция
gradx=@(x,y)2*x+(exp(x)).*(exp(y));
grady=@(x,y)4*y+(exp(x)).*(exp(y));
x0=1;
y0=1;
e=0.05;
alfa=1;
D=e/2;
a=-5;
b=5;
while sqrt(gradx(x0,y0)*gradx(x0,y0)+grady(x0, y0)*grady(x0,y0))>e
g=@(alfa)f(x0-(alfa*gradx(x0,y0)),y0-(alfa*grady(x0,y0)));
min_alfa=dihot(a,b,e,D,g);
alfa=min_alfa;
x0=x0-(alfa*gradx(x0,y0));...
Старый
Метод сопряженных градиентов
Запись от simonovada размещена 07.12.2019 в 19:10
Показов 1382 Комментарии 1

clear all;
f = @(x,y)(x^2+2.*y^2+(exp(x)).*(exp(y)));%и сходная функция
gradx=@(x,y)2*x+(exp(x)).*(exp(y));
grady=@(x,y)4*y+(exp(x)).*(exp(y));
x0=1;
y0=1;
e=0.05;
p=1;
alfa=1;
a=-5;
b=5;
D=e/2;
p=1;
beta=1;
while sqrt(gradx(x0,y0)*gradx(x0,y0)+grady(x0, y0)*grady(x0,y0))<100
if rem(p,2)==1
dx=-gradx(x0,y0);
dy=-grady(x0,y0);
g=@(alfa)f(x0+(alfa*dx),y0+alfa*dy);...
Старый
Градиентный ускоренный
Запись от simonovada размещена 07.12.2019 в 19:08
Показов 716 Комментарии 0

clear all;
f = @(x,y)(x^2+2.*y^2+(exp(x)).*(exp(y)));
gradx=@(x,y)2*x+(exp(x)).*(exp(y));
grady=@(x,y)4*y+(exp(x)).*(exp(y));
x1=1;
y1=1;
x0=1;
y0=1;
e=0.05;
alfa=1;
D=e/2;
a=-5;
b=5;
p=2;
while p>0
g=@(alfa)f(x1-(alfa*gradx(x1,y1)),y1-(alfa*grady(x1,y1)));
min_alfa=dihot(a,b,e,D,g);
alfa=min_alfa;
x1=x1-(alfa*gradx(x1,y1));
y1=y1-(alfa*grady(x1,y1));...
Старый
Градиентный метод с расходящимся шагом
Запись от simonovada размещена 07.12.2019 в 19:06
Показов 917 Комментарии 0

clear all;
f = @(x,y)(x^2+2.*y^2+(exp(x)).*(exp(y)));
gradx=@(x,y)2*x+(exp(x)).*(exp(y));
grady=@(x,y)4*y+(exp(x)).*(exp(y));
k=10;
alfa=1/k;
x0=1;
y0=1;
e=0.05;
while sqrt(gradx(x0,y0)*gradx(x0,y0)+grady(x0, y0)*grady(x0,y0))>e
if (f(x0-(alfa*gradx(x0,y0)),y0-(alfa*grady(x0,y0)))-f(x0,y0)<=alfa*(gradx(x0,y0)*gradx(x0,y0 )+grady(x0,y0)*grady(x0,y0)))
x0=x0-(alfa*gradx(x0,y0));
y0=y0-(alfa*grady(x0,y0));...
Старый
Градиентный метод с дроблением шага
Запись от simonovada размещена 07.12.2019 в 19:02
Показов 1068 Комментарии 0

clear all;
f = @(x,y)(x^2+2.*y^2+(exp(x)).*(exp(y)));
gradx=@(x,y)2*x+(exp(x)).*(exp(y));
grady=@(x,y)4*y+(exp(x)).*(exp(y));
alfa=1;
x0=1;
y0=1;
beta=0.5;
e=0.05;
while sqrt(gradx(x0,y0)*gradx(x0,y0)+grady(x0, y0)*grady(x0,y0))>e
if (f(x0-(alfa*gradx(x0,y0)),y0-(alfa*grady(x0,y0)))-f(x0,y0)<=-beta*alfa*(gradx(x0,y0)*gradx(x0,y0)+gra dy(x0,y0)*grady(x0,y0)))
x0=x0-(alfa*gradx(x0,y0));
y0=y0-(alfa*grady(x0,y0));...
Старый
Градиентный метод с постоянным шагом
Запись от simonovada размещена 07.12.2019 в 18:59
Показов 687 Комментарии 0

clear all;
f = @(x,y)(x^2+2.*y^2+(exp(x)).*(exp(y)));%… ”»œƒŒ¡— ∆’ŒÀ√…—
gradx=@(x,y)2*x+(exp(x)).*(exp(y));
grady=@(x,y)4*y+(exp(x)).*(exp(y));
alfa=0.01;
x0=1;
y0=1;
e=0.05;
while sqrt(gradx(x0,y0)*gradx(x0,y0)+grady(x0, y0)*grady(x0,y0))>e
if (f(x0-(alfa*gradx(x0,y0)),y0-(alfa*grady(x0,y0)))-f(x0,y0))<0
x0=x0-(alfa*gradx(x0,y0));
y0=y0-(alfa*grady(x0,y0));
end
end
minxy...
Старый
Покоординатный метод
Запись от simonovada размещена 07.12.2019 в 18:53
Показов 820 Комментарии 0

clear all;
a=-5;
b=5;
e=0.05;
D=e/2;
x0=1;%координаты первой точки
y0=1;
f = @(x,y)(x^2+y^2+(exp(x)).*(exp(y)));%исхо дная функция
f1=@(x)f(x,y0);
x1=dihot(a,b,e,D,f1);
f2=@(y)f(x1,y);
y1=dihot(a,b,e,D,f2);
while sqrt((x1-x0)^2+(y1-y0)^2)<=100 % бесконечный цикл
x0=x1;
y0=y1;
f1=@(x)f(x,y0); %функция от одной переменной...
Старый
Поис минимума с помощью хорд/секущих
Запись от simonovada размещена 07.12.2019 в 18:51
Показов 686 Комментарии 0

clear all;
x= linspace(0.5,1,10); %х принимает значения от 0.5 до 10, шаг 1
A = -1/2; %коэффициент для исходной функции
B =10;%коэффициент для исходной функции
f = @(x)(A.*(x.^2)+(B.*x).*log(x));%исходная функция
a = 0.5; %промежуток [a,b]
b = 1;
e = 0.05;%точность
dF =@(x)(-x+10*log(x)+10);
while abs(b-a)>e
...
Старый
Поиск минимума методом Ньютона-Рафсона
Запись от simonovada размещена 07.12.2019 в 18:48
Показов 1275 Комментарии 0

clear all;
x = linspace(0.5,1,10); % х принимает значения от 0.5 до 1, рассматриваем 10 точек
A = -1/2;
B =10;
f = @(x)(A.*(x.^2)+(B.*x).*log(x)); % исходная формула
e = 0.05;%точность
x0=0.5; %задаем x0 , проводим в этой точке касательную к функции
dF =@(x)(-x+10*log(x)+10);
dF1=@(x)(-1+10/x);
while abs(dF(x0)) > e
...
Старый
Поис минимума с помощью касательных
Запись от simonovada размещена 07.12.2019 в 18:47
Показов 639 Комментарии 0

clear all;
x = linspace(0.5,1,10); % х принимает значения от 0.5 до 1, рассматриваем 10 точек
A = -1/2;
B =10;
f = @(x)(A.*(x.^2)+(B.*x).*log(x)); % исходная формула
plot(x,f(x));
a = 0.5; %промежуток [a,b]
b = 1; %промежуток
e = 0.05; %точность
dF =@(x)(-x+10*log(x)+10);
c=(dF(a)*a-f(a)+f(b)-dF(b)*b)/(dF(a)-dF(b));
while (abs(dF(c))>e...
Старый
Поиск минимума методом Золотого сечения
Запись от simonovada размещена 07.12.2019 в 18:45
Показов 835 Комментарии 0

clear all;
A = -1/2;
B =10;
x = linspace(0.5,1,10); % х принимает значения от 0.5 до 1, рассматриваем 10 точек
f = @(x)(A.*(x.^2)+(B.*x).*log(x)); % исходная формула
plot(x,f(x)); % строим график
a = 0.5; % промежуток [a,b]
b = 1;
e = 0.05; %точность
D = e/2;
while abs(b-a) > 2*e
x1=a+(b-a)*((3-sqrt(5))/2);
x2=a+(b-a)*((sqrt(5)-1)/2);...
Старый
Поиск минимума методом дихотомии
Запись от simonovada размещена 07.12.2019 в 18:43
Показов 948 Комментарии 0

clear all;
x = linspace(0.5,1,10); % х принимает значения от 0.5 до 1, рассматриваем 10 точек
A = -1/2;
B =10;
f = @(x)(A.*(x.^2)+(B.*x).*log(x)); % исходная формула
plot(x,f(x)); % строим график
a = 0.5; % промежуток [a,b]
b = 1;
e = 0.05; %точность
D = e/2;
while abs(b-a) > 2*e % на каждой итерации получаем отрезок,...
Старый
Метод пассивного поиска минимума
Запись от simonovada размещена 07.12.2019 в 18:40
Показов 1777 Комментарии 1

clear all;
% метод пассивного поиска
x = linspace(0.5,1,10); % х принимает значения от 0.5 до 1, рассматриваем 10 точек
A = -1/2;
B =10;
f = @(x)(A.*(x.^2)+(B.*x).*log(x)); % исходная формула
a = 0.5; % промежуток [a,b]
b = 1;
e = 0.05; %точность
n=10; %разбиваем промежуток на n равных частей
y(1:10)=0;...
Старый
Рейтинг: 5.00. Голосов: 1.
MATLAB. Точки пересечения дискретных данных
Запись от Зосима размещена 04.02.2019 в 20:16 / Записки сумасшедшего шляпника.
Показов 8898 Комментарии 1
Метки matlab

Скриптик для MATLAB для нахождения точек пересечения последовательностей данных (одинакового размера).
В отличии от функций fzero или fsolve он возвращает все точки пересечений на промежутке. Тут применена линейная интерполяция, поэтому результат точнее, чем простой поиск ближайшего значения. Также не требуется точное выражение функции, а лишь отдельные точки данных, что очень удобно для обработки экспериментальных данных с шумами.
Matlab M
1
2
clear, clc
% некоторые данные:
...
Аватар для Зосима
Старый
Рейтинг: 5.00. Голосов: 2.
Моделирование последовательностей в MATLAB
Запись от Зосима размещена 22.12.2016 в 12:53 / Записки сумасшедшего шляпника.
Показов 5326 Комментарии 0

Привет, ребятки!

Часто при моделировании различных сигналов приходится иметь дело с различными последовательностями. Например кодами Баркера или потоками данных.
Задаются они обычно набором значений, например F = [1, -1, 1, 1, 1, -1]; Однако в жизни каждый символ представляет собой прямоугольный импульс, которые нам и нужно промоделировать.
Загвоздка в том, что...
Аватар для Зосима
Старый
Нарисовать произвольное количество случайных окружностей
Запись от Зосима размещена 04.03.2015 в 11:12 / Записки сумасшедшего шляпника.
Показов 3289 Комментарии 0
Метки matlab, магия

Вот за что я люблю MATLAB
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
clear, clc
n = 10; % количество
% случайные параметры окружностей (строки)
R = 2 + 4*rand(1,n);
x = 3*randn(1,n);
y = 3*randn(1,n);
 
a = deg2rad(0:360)'; % вектор углов (столбец)
 
plot( exp(1i*a)*R + ones(size(a))*(x+1i*y)  ) % МАГИЯ! ^___^
 
axis equal % выравниваем масштабы осей для красоты
Нажмите на изображение для увеличения
Название: 01F.png
Просмотров: 948
Размер:	8.9 Кб
ID:	3068
Аватар для Зосима
Старый
Рейтинг: 4.50. Голосов: 2.
ООП в МАТЛАБ. Раздел 1. Общие соображения.
Запись от letete размещена 15.08.2014 в 19:44 / Это МАТЛАБ, детка...
Показов 25948 Комментарии 0
Метки matlab, ооп

Начну с общих моментов.

Часть 1.1. В начале был m-файл...
Каждый класс в МАТЛАБ располагается в отдельном файле. Возможно перенесение некоторых функций (методов) класса в отдельный файл-функцию, об этом чуть ниже. Для начала, необходимо создать главный файл для класса и назвать его в точности как называется класс (среда ругается даже на разницу в прописных/заглавных символах):
Matlab M
1
2
classdef mycLasS % файл ОБЯЗАН называться mycLasS.m
end
Каждый класс может иметь...
Старый
Рейтинг: 5.00. Голосов: 1.
ООП в МАТЛАБ. Раздел 2. Особенности функционирования.
Запись от letete размещена 07.08.2014 в 17:09 / Это МАТЛАБ, детка...
Показов 12184 Комментарии 0
Метки matlab, ооп

Часть 1. Атрибуты SetAccess, GetAccess, AbortSet

Если класс объявлен как handle (т.е. наследуется от handle), то МАТЛАБ допускает удобный доступ к его свойствам. Для этого применяются специальный вид функций set/get:
Matlab M
1
2
3
4
% файл с21.m
classdef c21 < handle   % наследование от handle обязательно
    properties     % по умолчанию атрибуты здесь следующие:
        p          % SetAccess = public, GetAccess
...
Старый
Рейтинг: 5.00. Голосов: 1.
ООП в МАТЛАБ. Раздел 3. Наследование.
Запись от letete размещена 17.07.2014 в 19:16 / Это МАТЛАБ, детка...
Показов 11934 Комментарии 0
Метки matlab, ооп

Наследование предполагает создание некоторой иерархии классов для описания некоторого взаимодействия между их экземплярами. Как и в предыдущих разделах, наследованием управляет определенная группа атрибутов.

Часть 1. Атрибут Sealed.
Атрибут Sealed означает "запечатанный", "герметичный" и может применяться к классу или к его методам. Этот атрибут означает запрет на наследование. Т.е. класс, определенный как Sealed не может иметь потомков.
Matlab M
1
% файл c31.m
...
Старый
Рейтинг: 4.50. Голосов: 2.
ООП в МАТЛАБ
Запись от letete размещена 15.07.2014 в 22:50 / Это МАТЛАБ, детка...
Показов 7751 Комментарии 3
Метки matlab, ооп

Так уж получилось, что на старости лет приходится разбираться в объектно-ориентированном программировании в среде МАТЛАБ. И хотя жаловаться на среду я не собираюсь – всем я доволен, благодаря партии!.. (в отличие от некоторых), тем не менее, несколько удивляет отсутствие информации на обычном русском языке относительно вышеуказанного вопроса. Я, конечно, понимаю, что МАТЛАБ...
Старый
использование HTML
Запись от letete размещена 03.07.2014 в 12:09 / Это МАТЛАБ, детка...
Показов 3811 Комментарии 0

Подборка статей г-на Альтмана
на тему использования HTML в МАТЛАБ.
Перевод вольный, сохраняющий лишь суть проблемы,
опробованный и дополненный.

Отсылка к оригиналам:
original part 1original part 2original part 3

Часть 1.
Все графические элементы uicontrols МАТЛАБа основаны на компонентах Java Swing (недокументированный факт). Общей чертой всех свингов JLabels...
Старый
модернизированная функция WAVREAD
Запись от letete размещена 01.07.2014 в 19:29 / Это МАТЛАБ, детка...
Показов 5887 Комментарии 0
Метки improvement, matlab

Среди встроенных функций МАТЛАБ существует функция чтения WAV-файлов под названием wavread. Собственно, это не новость и не секрет. Функция хорошо задокументирована и почти всегда нормально работает. В смысле почти всегда работает и почти всегда нормально.

Попытаюсь объяснить что я имею ввиду.
Если внимательно прочитать справку по функции (help wavread), то можно обратить внимание на то, что "Supports Microsoft PCM data format only". Однако, если посмотреть...
Старый
Изменение цветов командного окна MATLAB
Запись от letete размещена 23.06.2014 в 17:25 / Это МАТЛАБ, детка...
Показов 14698 Комментарии 0

Подборка статей г-на Альтмана
на тему разукрашивания командного окна МАТЛАБ.
Перевод вольный, сохраняющий лишь суть проблемы,
опробованный и дополненный.

Отсылка к оригиналам:
original part 1,
original part 2,
original part 3.

Часть 1.
Изменение цветов (фона и шрифта) в командном окне МАТЛАБ возможно из меню File->Preferences, но, очевидно, требует действий пользователя. Представляет...
Старый
Рейтинг: 5.00. Голосов: 1.
Матричная магия: часть 1 - Суммирование в мгновение ока!
Запись от Зосима размещена 01.02.2013 в 18:27 / Записки сумасшедшего шляпника.
Показов 10288 Комментарии 18

Очень часто возникают задачи посчитать сумму ряда.
В традиционных языках программирования для этого используются циклы, в матлабе же есть замечательная встроенная функция sum, которая одним махом находит сумму элементов массива или столбцов матрицы!
Но я расскажу еще об одном способе: матричном заклинании которое считает сумму быстрее первых двух способов!
Вспомним правило матричного умножения: элемент новой матрицы равен сумме произведений строки первой матрицы на столбец...
Аватар для Зосима
Старый
Матричная магия: вступление
Запись от Зосима размещена 01.02.2013 в 17:03 / Записки сумасшедшего шляпника.
Показов 4025 Комментарии 0
Метки matlab

Одной из особенностей MATLAB-а, отличающего его среди множества иных языков программирования высокого уровня, является поддержка матричных операций! Основным из них является умножение, из которого реализуются деление и степень (есть еще и другие, вроде матричной экспоненты, но не будем зарываться в дебри).
Обозначаются они операторами: *, /, ^ соответственно.

Если мы заглянем в математический справочник, то можем...
Аватар для Зосима
Старый
Рейтинг: 5.00. Голосов: 1.
Новогодние салаты.
Запись от Зосима размещена 14.01.2013 в 20:57 / Записки сумасшедшего шляпника.
Показов 386 Комментарии 0

Как-то на новый год жена дала мне задание орезать мясо на два салата, причем в один нужно положить 1/3 общего кол-ва, ну и соответственно во второй 2/3.
Пока резал, размышлял в себе как быть... Ведь легко поделить на 2: вычесть 6 дБ, сдвинуть в двоичном виде на одни разряд вправо или найти точку в которой интергралы плотности по объему будут равны:

https://www.cyberforum.ru/cgi-bin/latex.cgi?\int_{- \inf }^x \rho dV = \int_x^{+ \inf} \rho dV

А вот на 3 поделить труднее. Как быть?...
Аватар для Зосима
Старый
Рейтинг: 5.00. Голосов: 1.
Зловещая точка претыкания!
Запись от Зосима размещена 13.12.2012 в 13:16 / Записки сумасшедшего шляпника.
Показов 4439 Комментарии 0
Метки matlab

Огромное число ошибок в MATLAB программах связано с отсутствием точки перед умножением,делением, степенью!

Поэтому, дружочек, в твоих же интересах ознакомиться с данным текстом до конца!

He пyтaй мaтpичнoe и пoэлeмeнтнoe yмнoжeниe/дeлeниe/cтeпeнь! Не забывай ставить точки!

Выражения a.*b, a./b, a.^b - этo пoэлeмeнтныe oпepaции! их зачастую и нужно использовать при работе с векторами!...
Аватар для Зосима
Старый
Логические векторы в MATLAB
Запись от Зосима размещена 05.12.2012 в 13:28 / Записки сумасшедшего шляпника.
Показов 13950 Комментарии 0
Метки matlab

В MATLAB, как и в C/C++ логические переменные легко превращаются в числовые, что открывает широкое поле деятельности. Но если C/C++ обрабатывает массивы поэлементно, то MATLAB счелкает их как орешки!

Пусть задан числовой вектор:

x = [0, 1.2, 2.4, 3.3, 1.05, 7.4];

Тогда результатом сравнения

logic_x = (x<3)

будет вектор такой же длинны:

logic_x = [1 1 1 0 1 0].

Что это нам дает?...
Аватар для Зосима
Старый
Рейтинг: 4.50. Голосов: 4.
Малый FAQ по MATLAB
Запись от Зосима размещена 31.10.2012 в 12:18 / Записки сумасшедшего шляпника.
Показов 9105 Комментарии 5
Метки matlab

Дружочек, прежде чем создавать новую тему прочти хотя бы первые три пункта:

- Около 50% вопросов можно решить, если воспользоваться поиском по форуму. Не бойся – это не страшно!

- Еще 30% вoпpocoв мoжнo peшить, ecли нe пoлeнитьcя глянyть help MATLAB-а: тaм мoжнo нaйти нe тoлькo нyжнyю фyнкцию, ee дeтaльный cинтaкcиc, нo и пpимep ee иcпoльзoвaния, a тaк жe ccылки нa cмeжныe фyнкции.
...
Аватар для Зосима
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 31.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru