Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
Matlab Ошибка в коде по обработке звука https://www.cyberforum.ru/ matlab/ thread1232139.html
Не могу понять как исправить код по обработке звукового сигнала сам код: clear all x=wavread('signal'); a=xcorr(x); z=abs(fft(a,32000)); w=z(1:500); =max(w(1:200)); NT=fix((1/f2)*32000) N=length(x);
Подскажите, в чем ошибка Matlab
Ошибки: Error using odearguments (line 91) ORBIT_GL must return a column vector. Error in ode45 (line 114) = ode45('orbit_GL',,,); Не знаю, о каком векторе идет речь, вроде бы и так векторы везде, где надо. Вторую ошибку вообще не понимаю. А третью - как только уже не менял эту строку, не могу ничего поделать. clc; clear all; close all;
Matlab Начертить две прямые, угол между которыми будет 90 градусов https://www.cyberforum.ru/ matlab/ thread1231463.html
Имеется 5 точек с координатами на плоскости,имеется матрица углов между прямыми,соединяющими начало координат с данными точками(alpha(1,2)-угол между прямыми ,соединяющее начало координат с точками 1 и 2 соответственно).Требуется начертить две прямые,угол между которыми будет 90 градусов.В область между этими прямыми должно попадать как можно больше точек,первая должна попасть обязательно она...
Matlab Ошибка при запуске (как избавиться?) https://www.cyberforum.ru/ matlab/ thread1231437.html
Когда я переношу файл в новую папку и запускаю, он выдаёт мне: "To run this file you can ether change MATLAB current folder or add its folder to the MATLAB path". Я хочу чтоб при запуске Path сам добавляться- в коде это возможно?
Как изменить цвета графиков в Plot Matlab
У меня Матица в которой первая колонка это время (ось икс) а все стальные "оси Игрик". Мой код: time=A.data(:,1); n=length(A.data(1,:)); i=0; for i=2:n figure(1) plot(time,A.data(:,i)); hold on
Matlab Определение max-ов и min-ов из массива Здравствуйте! Возникла необходимость решить задачу, в которой надо найти max и min из большого массива данных, но не просто 2 значения из массива, а определить нули (точки пересечения оси или значения близкие к нулю) и между этими "нулями" определить по одному значению min и max. Для наглядности на картинке красным отметил max а синим min, точки t1, t2, t3, t4 нули, между точкой t1 и t2 нужно... https://www.cyberforum.ru/ matlab/ thread1231310.html
Matlab Доступ к выходным аргументам Ребята, доброй ночи! Есть такая задача, нужна помощь, пожалуйста: Существуют две функций: 1)function = Shrеd(V) В Varargout входят 2 вектора: Ro,X 2) function = Poisson(a,b,ua,ub,n,Ro) Т.е есть два вектора: V и U. V дается как входной аргумент к первому, а выходной аргумент первой функции- входной аргумент второго. Проблема в том, что мне нужно организовать цикл для итерации, чтобы... https://www.cyberforum.ru/ matlab/ thread1231216.html Matlab Задачи линейного программирования (2)
Предположим для определенности, что необходимо составить самый дешевый рацион питания цыплят, содержащий необходимое количество определенных питательных веществ (для простоты, тиамина Т и ниацина Н). Таблица 1. Исходные данные в задаче об оптимизации смеси. Содержание http://********/um6z Пищевая ценность рациона (в калориях) должна быть не менее заданной. Пусть для простоты смесь для...
Matlab Сколько надо сделать стульев и столов, чтобы получить максимальную прибыль? Нужна помощь в решении данных задач https://www.cyberforum.ru/ matlab/ thread1231174.html Matlab Разложение в ряд Фурье, спектральный анализ Есть следующая ф-ция x(t)=-0.5+sin2t-cos5t, и есть некоторые наработки... clear, clc t = ; x = -0.5+sin(2*t)-cos(5*t); L=size(t,2); NFFT = 2^nextpow2(L); Y1 = fft(x,NFFT)/L; f = linspace(0,1,NFFT/2+1); Y=2*abs(Y1); https://www.cyberforum.ru/ matlab/ thread1231052.html
Matlab Работа с символами и ускорение работы
Доброго времени суток.... сделал вот такую шутку. Она формируют матрицу из символов а потом делает обычную матрицу function Cproduct=product(A,B); clear;clc syms b1 b2 b3 b4 b5 b6 b7 b8 b9 b10 b11 A=; B=; na=size(A,2); % число столбцов А nb=size(B,2); % число столбцов В Cproduct=; for i=1:na
Matlab Управление сеткой при выводе графиков https://www.cyberforum.ru/ matlab/ thread1228985.html
Известно что сетка при построении плоских графиков включается-выкл командой grid on; При этом матлаб автоматически сам выбирает масштабы графиков и сетку. И тем не менее можно ли управлять густотой сетки? Скажем чтобы ее шаг по осям x,y был 1? Не говоря уж о том чтобы выбирать стиль линий - сплошной, пунктир, штрих-пунктир. Возможно ли это в матлаб?
4820 / 2286 / 287
Регистрация: 01.03.2013
Сообщений: 5,970
Записей в блоге: 29
23.07.2014, 19:21  [ТС] 0

Построить четырехугольник по заданным точкам - Matlab - Ответ 6455446

23.07.2014, 19:21. Показов 4570. Ответов 34
Метки (Все метки)

Ответ

Сейчас мой код выглядит так:
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
function GUI_test()
    h.P = [1,1; 1,-1; -1,-1; -1,0];
    axis([-2, 2, -2, 2])
    axis square
    
    uicontrol('Tag','InitPoints', 'style','edit', 'units','normalized', 'position',[.00 0.80 .20 .15], ...
       'string',num2str(h.P), 'value',3, 'max',3, 'callback', @SetInitialPoints);
    uicontrol('Tag','FigurePoints', 'style','edit', 'units','normalized', 'position',[.00 0.50 .20 .15], ...
       'string','', 'max',3);
   
    uicontrol('style','pushbutton', 'units','normalized', 'position',[.86 .30 .12 .05], ...
       'string','+', 'callback', {@ZoomAxis, 1});
    uicontrol('style','pushbutton', 'units','normalized', 'position',[.86 .20 .12 .05], ...
       'string','-', 'callback', {@ZoomAxis, -1});
    uicontrol('style','pushbutton', 'units','normalized', 'position',[.86 .10 .12 .05], ...
       'string','><', 'callback', @Center_Figure);
    
    h.P0.mark = line(0, 0, 'marker','o','erase','xor','color','r','LineWidth',2,'Visible','off');
    h.P1.mark = line(h.P(1, 1),h.P(1, 2),'marker','o','erase','xor','color','k');
    h.P2.mark = line(h.P(2, 1),h.P(2, 2),'marker','o','erase','xor','color','k');
    h.P3.mark = line(h.P(3, 1),h.P(3, 2),'marker','o','erase','xor','color','k');
    h.P4.mark = line(h.P(4, 1),h.P(4, 2),'marker','o','erase','xor','color','k');
 
    h.F0.line = line([h.P(:, 1); h.P(1, 1)], [h.P(:, 2); h.P(1, 2)], 'erase','xor','color','k');
    h.F1.line = line(0, 0, 'erase','xor','color','b','Visible','off');
    h.F2.line = line(0, 0, 'marker','.','erase','xor','color','g','Visible','off');
    h.F3.line = line(0, 0, 'marker','.','erase','xor','color','g','Visible','off');
 
    h.C1.line = line(h.P(1, 1),h.P(1, 2),'erase','xor','color','c','LineStyle',':');
    h.C2.line = line(h.P(1, 1),h.P(1, 2),'erase','xor','color','m','LineStyle',':');
 
    Curves(h);
 
    set(gcf,'name','Задача о четырёхугольнике')
    set(gcf,'tag','Задача о четырёхугольнике', ...
        'userdata',h, ...
        'windowbuttondownfcn', @wdButtonDownFcn, ...
        'windowbuttonupfcn', 'set(gcf,''windowbuttonmotionfcn'','''')')
 
    function wdButtonDownFcn(gcf,evnt)
        h = get(gcf,'userdata');
        pt = get(gca,'currentpoint');
        x = pt(1,1:2);
        XLim = get(gca,'XLim');
        YLim = get(gca,'YLim');
        wide = max([XLim(2)-XLim(1), YLim(2)-YLim(1)]);
 
        if strcmp(get(gcf,'SelectionType'),'normal')
            set(gcf,'windowbuttonmotionfcn', @wdButtonDownFcn)
 
            set(h.P0.mark,'Visible','off');
            set(h.F1.line,'Visible','off');
            set(h.F2.line,'Visible','off');
            set(h.F3.line,'Visible','off');
 
            d = (x(1)-h.P(:,1)).^2 + (x(2)-h.P(:,2)).^2;
            if min(d) > wide/20
                return
            end
            ind = find(d == min(d));
            ind = ind(1);
            h.P(ind, :) = x;
 
            if ind == 1
                h_P = h.P1;
            elseif ind == 2
                h_P = h.P2;
            elseif ind == 3
                h_P = h.P3;
            elseif ind == 4
                h_P = h.P4;
            else
                return
            end
 
            set(h_P.mark,'xdata',x(1),'ydata',x(2));
            set(h.F0.line,'xdata',[h.P(:, 1); h.P(1, 1)],'ydata',[h.P(:, 2); h.P(1, 2)]);
            Curves(h);
            set(gcf,'userdata',h);
            set(findobj(gcf, 'Tag', 'InitPoints'), 'string', num2str(h.P));%, '%0.3g'));
        else
            Figures(h, x);
        end
    end
 
    function SetInitialPoints(src,evnt)
 
    %     s = '2.2632     0.57895....
    %      1          -1
    %     -1          -1
    %     -1           0
 
        s = get(src,'string')
    %     numel(s)
        numel(s)
 
        s(1)
        s(2)
 
        P = str2double(get(src,'string'))
    end
 
    function Curves(h)
        X1 = h.P(1,1); Y1 = h.P(1,2);
        X2 = h.P(2,1); Y2 = h.P(2,2);
        X3 = h.P(3,1); Y3 = h.P(3,2);
        X4 = h.P(4,1); Y4 = h.P(4,2);
 
        XLim = get(gca,'XLim');
        YLim = get(gca,'YLim');
        xx = XLim(1):(XLim(2)-XLim(1))/50:XLim(2);
        yy = YLim(1):(YLim(2)-YLim(1))/50:YLim(2);
        [x0,y0] = meshgrid(xx, yy);
 
        zz = ((X2 - x0).*(X1.*(X1 - x0) + Y1.*(Y1 - y0)) - (X1 - x0).*(X2.*(X2 - x0) + Y2.*(Y2 - y0))).*((Y4 - y0).*(X3.*(X3 - x0) + Y3.*(Y3 - y0)) - (Y3 - y0).*(X4.*(X4 - x0) + Y4.*(Y4 - y0))) - ((X4 - x0).*(X3.*(X3 - x0) + Y3.*(Y3 - y0)) - (X3 - x0).*(X4.*(X4 - x0) + Y4.*(Y4 - y0))).*((Y2 - y0).*(X1.*(X1 - x0) + Y1.*(Y1 - y0)) - (Y1 - y0).*(X2.*(X2 - x0) + Y2.*(Y2 - y0))) - x0.*(((X2 - x0).*(X1.*(X1 - x0) + Y1.*(Y1 - y0)) - (X1 - x0).*(X2.*(X2 - x0) + Y2.*(Y2 - y0))).*((X3 - x0).*(Y4 - y0) - (X4 - x0).*(Y3 - y0)) - ((X4 - x0).*(X3.*(X3 - x0) + Y3.*(Y3 - y0)) - (X3 - x0).*(X4.*(X4 - x0) + Y4.*(Y4 - y0))).*((X1 - x0).*(Y2 - y0) - (X2 - x0).*(Y1 - y0))) - y0.*(((Y2 - y0).*(X1.*(X1 - x0) + Y1.*(Y1 - y0)) - (Y1 - y0).*(X2.*(X2 - x0) + Y2.*(Y2 - y0))).*((X3 - x0).*(Y4 - y0) - (X4 - x0).*(Y3 - y0)) - ((Y4 - y0).*(X3.*(X3 - x0) + Y3.*(Y3 - y0)) - (Y3 - y0).*(X4.*(X4 - x0) + Y4.*(Y4 - y0))).*((X1 - x0).*(Y2 - y0) - (X2 - x0).*(Y1 - y0)));
        C = contourc(xx, yy, zz, [0, 0]);
        if numel(C) > 2
            C(:,1) = [];
            set(h.C1.line,'xdata',C(1,:),'ydata',C(2,:),'Visible','on');
        else
            set(h.C1.line,'Visible','off');
        end
 
        zz = ((X4 - x0).*(X1.*(X1 - x0) + Y1.*(Y1 - y0)) - (X1 - x0).*(X4.*(X4 - x0) + Y4.*(Y4 - y0))).*((Y3 - y0).*(X2.*(X2 - x0) + Y2.*(Y2 - y0)) - (Y2 - y0).*(X3.*(X3 - x0) + Y3.*(Y3 - y0))) - ((X3 - x0).*(X2.*(X2 - x0) + Y2.*(Y2 - y0)) - (X2 - x0).*(X3.*(X3 - x0) + Y3.*(Y3 - y0))).*((Y4 - y0).*(X1.*(X1 - x0) + Y1.*(Y1 - y0)) - (Y1 - y0).*(X4.*(X4 - x0) + Y4.*(Y4 - y0))) - x0.*(((X4 - x0).*(X1.*(X1 - x0) + Y1.*(Y1 - y0)) - (X1 - x0).*(X4.*(X4 - x0) + Y4.*(Y4 - y0))).*((X2 - x0).*(Y3 - y0) - (X3 - x0).*(Y2 - y0)) - ((X3 - x0).*(X2.*(X2 - x0) + Y2.*(Y2 - y0)) - (X2 - x0).*(X3.*(X3 - x0) + Y3.*(Y3 - y0))).*((X1 - x0).*(Y4 - y0) - (X4 - x0).*(Y1 - y0))) - y0.*(((Y4 - y0).*(X1.*(X1 - x0) + Y1.*(Y1 - y0)) - (Y1 - y0).*(X4.*(X4 - x0) + Y4.*(Y4 - y0))).*((X2 - x0).*(Y3 - y0) - (X3 - x0).*(Y2 - y0)) - ((Y3 - y0).*(X2.*(X2 - x0) + Y2.*(Y2 - y0)) - (Y2 - y0).*(X3.*(X3 - x0) + Y3.*(Y3 - y0))).*((X1 - x0).*(Y4 - y0) - (X4 - x0).*(Y1 - y0)));
        C = contourc(xx, yy, zz, [0, 0]);
        if numel(C) > 2
            C(:,1) = [];
            set(h.C2.line,'xdata',C(1,:),'ydata',C(2,:),'Visible','on');
        else
            set(h.C2.line,'Visible','off');
        end
    end
 
    function Figures(h, x)
        function r = diagonal_conditions(p0)
            a = p0(1) - h.P(:, 1);
            b = p0(2) - h.P(:, 2);
            c = a.*h.P(:, 1) + b.*h.P(:, 2);
            ac = circshift(a, -1);
            bc = circshift(b, -1);
            cc = circshift(c, -1);
            z = a.*bc - ac.*b;
            xv = (bc.*c - b.*cc)./z;
            yv = (cc.*a - c.*ac)./z;
            r = [p0(2)*(xv(3) - xv(1)) - p0(1)*(yv(3) - yv(1)) - yv(1)*xv(3) + xv(1)*yv(3);
                p0(2)*(xv(4) - xv(2)) - p0(1)*(yv(4) - yv(2)) - yv(2)*xv(4) + xv(2)*yv(4)];
        end
        xv = zeros(4, 1); yv = zeros(4, 1);
        options = optimoptions('fsolve','Display','off');
        p0 = fsolve(@diagonal_conditions, [x(1), x(2)], options);
        set(h.P0.mark,'xdata',p0(1),'ydata',p0(2),'Visible','on');
        set(h.F1.line,'xdata',[xv; xv(1)],'ydata',[yv; yv(1)],'Visible','on');
        set(h.F2.line,'xdata',[xv(1); xv(3)],'ydata',[yv(1); yv(3)],'Visible','on');
        set(h.F3.line,'xdata',[xv(2); xv(4)],'ydata',[yv(2); yv(4)],'Visible','on');
 
        set(findobj(gcf, 'Tag', 'FigurePoints'), 'string', num2str([xv, yv]));%, '%0.3g'));
    end
 
    function ZoomAxis(src,evnt,par)
        XLim = get(gca,'XLim');
        YLim = get(gca,'YLim');
        deltaX = XLim(2)-XLim(1);
        deltaY = YLim(2)-YLim(1);
    %     if strcmp(get(src,'string'),'+')
        if par == 1
            deltaX = deltaX/4;
            deltaY = deltaY/4;
        end
        axis([mean(XLim)-deltaX, mean(XLim)+deltaX, mean(YLim)-deltaY, mean(YLim)+deltaY])
        Curves(get(gcf,'userdata'));
    end
 
    function Center_Figure(src,evnt)
        h = get(gcf,'userdata');
        x = get(h.F0.line,'xdata');
        if iscolumn(x) x = x'; end
        y = get(h.F0.line,'ydata');
        if iscolumn(y) y = y'; end
        if strcmp(get(h.P0.mark,'Visible'),'on')
            x = [x, get(h.P0.mark,'xdata')];
            y = [y, get(h.P0.mark,'ydata')];
        end
        if strcmp(get(h.F1.line,'Visible'),'on')
            x = [x, get(h.F1.line,'xdata')];
            y = [y, get(h.F1.line,'ydata')];
        end
        xc = (max(x)+min(x))/2;
        yc = (max(y)+min(y))/2;
        delta = 1.1*(max([max(x)-min(x), max(y)-min(y)])/2);
        axis([xc-delta, xc+delta, yc-delta, yc+delta])
        Curves(h);
    end
 
end
Смущает много моментов, но о котором говорю - чтобы в левом верхнем эдите можно было задавать вручную координаты точек - и график брал бы их. Все понятно, кроме того, как их разупаковать из строки с переводами строк...

Да, теперь для построения решения надо правой кнопкой мыши жать

Вернуться к обсуждению:
Построить четырехугольник по заданным точкам Matlab
1
Заказать работу у эксперта

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.07.2014, 19:21
Готовые ответы и решения:

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

Как нарисовать на Canvas четырехугольник по заданным точкам?
если у мне имеется 4 точки как рисовать четирыехуголник

Как построить сплайн по заданным точкам
Всем добрый день. У меня возникла такая проблема. Имеется одномерный массив состоящий из чисел:...

Построить квадрат по двум заданным точкам
подскажите ,пожалуйста,как построить квадрат по двум заданым смежным вершынам? вот мои попытки ...

34
23.07.2014, 19:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.07.2014, 19:21
Помогаю со студенческими работами здесь

Построить прямоугольник по двум заданным точкам
Построить прямоугольник по двум заданным точкам: левому верхнему и правому нижнему углам. Обе точки...

Построить прямоугольник по двум заданным точкам
Помогите сделать до конца задачу на СИ.! 1)Построить прямоугольник по двум заданным точкам:...

Определить, можно ли по заданным точкам построить прямоугольник
Похожая тема была, но там ничего не ответили. Проблема еще в том, что если глупый пользователь...

Построить кривую параболического типа по 4 точкам, заданным с помощью локатора
Построить график кривой параболического типа по 4 точкам, заданным с помощью локатора. Я написал...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru