Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.81/27: Рейтинг темы: голосов - 27, средняя оценка - 4.81
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 56
1

Моделирование двигателя постоянного тока с независимым возбуждением

14.02.2013, 15:08. Просмотров 4992. Ответов 22
Метки нет (Все метки)

я ещё в самом начале, вопрос вот в чём, есть матрица в которой первый столбец - угловая скорость, 3 - остальных - это моменты номинальные, они даны по три значения для каждой скорости (т. е. опыт проведён троекратно). Необходимо для начала найти среднее значение момента для каждой скорости, я начал вот так, только пока не знаю как сформировать итоговую матрицу со средним моментом для каждой скорости
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
clc; clear all;
%Механическая характеристика нагрузки
A=[10  299.9  313.46 310.14
   20  289.73 302.36 304.75
   30  297.8  297.96 310.51
   40  286.6  283.12 280.15
   50  317.04 328.52 321.81
   60  294.29 298.73 309.2
   70  310.54 300.7  288.66
   80  295.93 306.4  295.05
   90  304.88 298.56 305.81
  100  330.36 328.02 322.65
  120  337.42 343.54 338.94
  130  351.11 348.2  354.96
  140  350.23 351.91 342.57
  150  356.9  347.82 355.38
  160  353.24 336.32 322.79
  170  363.15 346.41 358.28
  180  369.39 386.94 394.98
  190  396.82 405.3  407.83
  200  399.42 400.09 416.86
  210  426.34 424.02 430.84
  220  413.84 393.86 380.95
  230  463.13 485.59 508.9
  240  467.09 454.87 450.91
  250  472.28 484.21 482.91
  260  486.64 465.1  457.71
  270  505.34 501.69 526.41
  280  490.6  498.91 493.49
  290  556.88 563.9  570.76
  300  551.53 528.38 537.57];
%Определение среднего значения момента
B = A;
B(:,  1)=[];
s=(sum(B, 2))/3;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.02.2013, 15:08
Ответы с готовыми решениями:

Моделирование двигателя постоянного тока в матлабе
Помогите пож. Задали построить в матлабе модель двигателя пост тока. Схему собрал а в параметрах...

Моделирование ВСТАВКИ ПОСТОЯННОГО ТОКА В МатЛабе (ВПТ)
Уважаемые, возможно у когото есть готовая модель вставки постоянного тока для МатЛаба. Был бы...

Настройка модели привода постоянного тока
Итак, есть модель двигателя постоянного тока, выполненная в виде регуляторов контура тока и...

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

22
5106 / 3445 / 354
Регистрация: 02.04.2012
Сообщений: 6,364
Записей в блоге: 16
14.02.2013, 16:31 2
Вот так
Matlab M
clc; clear all;
%Механическая характеристика нагрузки
A=[10  299.9  313.46 310.14
   20  289.73 302.36 304.75
   30  297.8  297.96 310.51
   40  286.6  283.12 280.15
   50  317.04 328.52 321.81
   60  294.29 298.73 309.2
   70  310.54 300.7  288.66
   80  295.93 306.4  295.05
   90  304.88 298.56 305.81
  100  330.36 328.02 322.65
  120  337.42 343.54 338.94
  130  351.11 348.2  354.96
  140  350.23 351.91 342.57
  150  356.9  347.82 355.38
  160  353.24 336.32 322.79
  170  363.15 346.41 358.28
  180  369.39 386.94 394.98
  190  396.82 405.3  407.83
  200  399.42 400.09 416.86
  210  426.34 424.02 430.84
  220  413.84 393.86 380.95
  230  463.13 485.59 508.9
  240  467.09 454.87 450.91
  250  472.28 484.21 482.91
  260  486.64 465.1  457.71
  270  505.34 501.69 526.41
  280  490.6  498.91 493.49
  290  556.88 563.9  570.76
  300  551.53 528.38 537.57];
%Определение среднего значения момента
B = A(:,2:4); % столбцы с моментами
B = mean(B,2); % среднее по срокам
M = [A(:,1) B] % результирующая матрица
0
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 56
14.02.2013, 18:04  [ТС] 3
далее необходимо построить матрицу F на словах получается что берётся угловая скорость 10, 20, .... и по формуле прогоняется каждый элемент первого столбца матрицы М. Вот код с формулой для значения 10, также поидее и для остальных позиций, а как сделать чтобы сразу готовая матрица получилась, пробовал в формулу просто и подставить по работает
Matlab M
1
2
3
4
%Формирование матрицы F
N=30; %количество элементов в столбце
i= [1:N]
F=[ 1, M(1,1), (M(1,1)^2), (M(1,1)^3), (M(1,1)^4), (M(1,1)^5), (M(1,1)^6)]
должна получиться матрица 7 столбцов Х 30 строк
ответ такой
1 10 100 1000 10000 100000 1000000
1 20 400 8000 16000 320000 64000000
и так далее...

Добавлено через 42 минуты
можно конечно и так лупануть, но во-первых считает только в третьей степени, дальше ерунда получается, а во-вторых
хотелось бы через матрицу М решение завязать, но тут видно что в ответе должно получиться
Matlab M
1
2
3
4
5
%Формирование матрицы F
N=30; %количество элементов в столбце
i= [10:10:300]
F=[(i.*0+1); (i.^1); (i.^2); (i.^3)];
D=F'
опять же если дальше в строке прописать (i.^4); .... то получается куча чисел непонятных(
0
5106 / 3445 / 354
Регистрация: 02.04.2012
Сообщений: 6,364
Записей в блоге: 16
14.02.2013, 19:30 4
Если готов и не боишься соприкоснуться с великолепием и изяществом матричной алгебры, то глянь в сюда : Заполнить массив по правилу
В твоем случае будет:
X = A(:,1)' ;
N = 0:7 ;

Вот только ты даешь себе отсчет в том, что 300^7 - это весьма большое число!
0
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 56
14.02.2013, 20:32  [ТС] 5
ладно лучше не углубляться, особо я не понял, но вот так тоже пойдёт:
Matlab M
1
2
3
4
%Формирование матрицы F
i = A(:,1)';
F=[(i.*0+1); (i.^1); (i.^2); (i.^3); (i.^4); (i.^5); (i.^6)];
D=F'
объясните пожалуйста, вот если ограничиться третьей степенью, то вывод результата приемлим, а если дальше степень повышать, то ерунда получается
может надо увеличить вывод числа знаков, ведь получилось же в MAPLE, значит в матлав тоже должно получиться(
0
Миниатюры
Моделирование двигателя постоянного тока с независимым возбуждением  
5106 / 3445 / 354
Регистрация: 02.04.2012
Сообщений: 6,364
Записей в блоге: 16
14.02.2013, 20:52 6
Чего это ерунда? Все должно считаться и отображаться в показамельном виде типа:
4.582e12, что значит 4.542*10^12
Можешь указать формат long перед выводом матрицы:

format long
D = F'
0
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 56
16.02.2013, 00:39  [ТС] 7
Дальше в Maple так прописано a:=linsolve(F,r)
Попробовал прописать так: a=r\F но ответ не сходится(
ход решения после транспонирования:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
%Транспонирование матрицы D
Mt_f=D';
Y1=[M(:,2)];
%Формирование матрицы Ф = F^T*F
F = Mt_f*D;
%Формируем вектор r
r=Mt_f*Y1;
%Находим коэффициент ai
a=r\F
%Составление математическоей модели
'Y=a(1,1)+a(1,2)*w+a(1,3)*w^2+a(1,4)*w^3+a(1,5)*w^4+a(1,6)*w^5+a(1,7)*w^6';
0
5106 / 3445 / 354
Регистрация: 02.04.2012
Сообщений: 6,364
Записей в блоге: 16
16.02.2013, 11:01 8
Попробуй чуточку иначе:
a*F = r;
a*F*inv(F) = r*inv(F);
a*E= r*inv(F);
a = r*inv(F);
Где inv(F) - обратная матрица к F.
Потому как с правым делением / и левым делением \ часто происходит путаница

Добавлено через 19 минут
А вообще надо бы проверить для начала на простом примере с известным результатом
0
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 56
16.02.2013, 12:49  [ТС] 9
Ни как с деление не получается вот код примера который на Maple был прописан, сейчас на Matlab до места деления все ответы сходятся, пробовал как ты советовал, выдаёт ошибку, не считает.
на картинке с низу код с insolve в Maple и верный ответ, как бы под него подогнать(
значения F и r в Matlab пересчитаны и сходятся с примером
Код примера:
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
clc; clear all;
%Механическая характеристика нагрузки
A=[0   130.018 129.997 129.955
   10  121.489 121.535 121.545
   20  115.715 115.644 115.741
   30  112.384 112.469 112.449
   40  110.56  110.558 110.649
   50  109.982 109.998 110.027
   60  110.405 110.492 110.394
   70  111.66  111.637 111.547
   80  113.351 113.436 113.487
   90  115.341 115.267 115.194
   100 117.52  117.47  117.448
   110 119.873 119.963 120.003
   120 122.172 122.203 122.213
   130 124.653 124.753 124.722
   140 126.653 126.891 126.926
   150 129.235 129.221 129.27 
   160 131.357 131.428 131.465
   170 133.499 133.449 133.497
   180 135.482 135.441 135.425
   190 137.204 137.198 137.176
   200 139.041 139.079 139.103
   210 140.54  140.462 140.52 
   220 142.036 142.079 142.126
   230 143.37  143.416 143.354
   240 144.79  144.801 144.837
   250 145.941 145.935 146.033
   260 146.964 146.895 146.849
   270 147.946 147.855 147.865
   280 148.814 148.815 148.822
   290 149.609 149.661 149.728];
%Определение среднего значения момента
B = A(:,2:4); % столбцы с моментами
B = mean(B,2); % среднее по срокам
M = [A(:,1) B]; % результирующая матрица
%Формирование матрицы F
i = A(:,1)';
F=[(i.*0+1); (i.^1); (i.^2); (i.^3); (i.^4); (i.^5); (i.^6)];
format long
D=F';
%Транспонирование матрицы D
Mt_f=D';
Y1=[M(:,2)];
%Формирование матрицы Ф = F^T*F
F = Mt_f*D;
%Формируем вектор r
r=Mt_f*Y1;
%Находим коэффициент ai
0
Миниатюры
Моделирование двигателя постоянного тока с независимым возбуждением  
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 56
16.02.2013, 13:04  [ТС] 10
a = F\r; оказалось достаточно, ответ сходится)
0
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 56
16.02.2013, 13:29  [ТС] 11
с делением оказалось просто, достаточно: а=F\r

Дальше цикл необходимо переделать под Matlab, см фото пока не понятно как
0
Миниатюры
Моделирование двигателя постоянного тока с независимым возбуждением  
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 56
16.02.2013, 13:40  [ТС] 12
интересно что w нигде ранее не определено, есть только запись такая см фото
0
Миниатюры
Моделирование двигателя постоянного тока с независимым возбуждением  
5106 / 3445 / 354
Регистрация: 02.04.2012
Сообщений: 6,364
Записей в блоге: 16
16.02.2013, 14:17 13
Эх, шоб я еще через телефон что-то видел
Но послухай что , тебе скажу
Вспоминая твою страшную матрицу со степенями и выражение Y = a(1) + a(2)*w + ... + a8*w^7
Можно сделать вывод, что w - это оборты, т.е. первый столбец A(:,1).
Но в матлабе есть замечательная ф-ция polyval ( см. описание: http://matlab.exponenta.ru/ml/... olyval.php )
Поэтому в твоем случае, можно обойтись без той страшной матрицы степеней! тогда:
Matlab M
1
Y = polyval(a,  A(:,1));
Но не торопись! У тебя написано: Y = a(1) + a(2)*w + ... + a8*w^7, т.е. a(1) соответствует нулевой степени, а ф-ция polyval понимает вектор коэфф-тов, где a(1) соответствует старшей степени! Поэтому его нужно развернуть:
Matlab M
1
a = a(end:-1:1);
И потом уже можно:
Matlab M
1
Y = polyval(a, A(:,1));
Конечно, можно все сделать и с помошью страшной матрицы степеней D
Matlab M
1
Y = D*a;
Где вектор a должен быть столбцом!, тогда каждая строка D будет умножаться на элементы a, находиться сумма этих произведений и результат будет записываться в Y

*Кстать, а решение a=F\r часом не для апроксимации находится?
** и как расшифровывается "ДПТ НВ"?
0
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 56
16.02.2013, 14:57  [ТС] 14
жуть как не понятно но ответы сходятся, скоро графики пойдут, там хоть наглядно видно что делаешь
ДПТ НВ - двигатель постоянного тока независимого возбуждения

Добавлено через 16 минут
Дальше получается нужно построить на одой плоскости график исходной модели (первоначальная матрица с усреднёнными значениями моментов), по оси x - точки 1, 2, .. а по оси y- соответствующие им значения моментов

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

Добавлено через 10 минут
если по проще вот две матрицы для вывода на график, они практически должны наложиться один на другой, поэтому первый кружками зарисовать необходимо а второй линией так нагляднее получится
W1=[i', B];
W2=[i', Y];
0
5106 / 3445 / 354
Регистрация: 02.04.2012
Сообщений: 6,364
Записей в блоге: 16
16.02.2013, 15:03 15
Можно так:
Matlab M
1
2
3
plot(1:length(B), B, ':ob', 1:length(Y), Y,'-*r')
grid on
legend('исходные','рассчитаные')
0
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 56
16.02.2013, 15:08  [ТС] 16
да не шифруюсь я
дело в том что есть аналог выполненный Maple и сфотографированный и оформленный в word ( с телефона особо не почитаешь)
ну и теперь решать пытаюсь но в Matlab параллельно пример и свой вариант, есть ли смысл целиком выкладывать?
0
5106 / 3445 / 354
Регистрация: 02.04.2012
Сообщений: 6,364
Записей в блоге: 16
16.02.2013, 17:07 17
Ясно, камасутра значит тогда оставляй как есть, буду спрашивать, если что будет нужно
А еще хочу попросить тебя проверить одну гипотезу и сделать одну весчь:
Перед самым рисованием графиков пропиши:
Matlab M
1
2
3
4
5
6
P = polyfit(A(:,1), B, 7);
YP = polyval(P, A(:,1));
% и потом рисование:
plot( A(:,1), B, ':ob',...
       A(:,1), Y,'--*r',...
       A(:,1), YP,'g')
и выложить сюда получившийся график!
.
0
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 56
16.02.2013, 17:16  [ТС] 18
получилось следующее пример с твоим окончанием
рис 1
решение же моего вариант оказалось интереснее, и мне кажется правдоподобнее, осталось проверку сделать
рис 2
на всякий случай код моего варианта, может что ещё интересное укажешь
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
clc; clear all;
%Механическая характеристика нагрузки
A=[10  299.9  313.46 310.14
   20  289.73 302.36 304.75
   30  297.8  297.96 310.51
   40  286.6  283.12 280.15
   50  317.04 328.52 321.81
   60  294.29 298.73 309.2
   70  310.54 300.7  288.66
   80  295.93 306.4  295.05
   90  304.88 298.56 305.81
  100  330.36 328.02 322.65
  110  318.15 315.57 304.57
  120  337.42 343.54 338.94
  130  351.11 348.2  354.96
  140  350.23 351.91 342.57
  150  356.9  347.82 355.38
  160  353.24 336.32 322.79
  170  363.15 346.41 358.28
  180  369.39 386.94 394.98
  190  396.82 405.3  407.83
  200  399.42 400.09 416.86
  210  426.34 424.02 430.84
  220  413.84 393.86 380.95
  230  463.13 485.59 508.9
  240  467.09 454.87 450.91
  250  472.28 484.21 482.91
  260  486.64 465.1  457.71
  270  505.34 501.69 526.41
  280  490.6  498.91 493.49
  290  556.88 563.9  570.76
  300  551.53 528.38 537.57];
%Определение среднего значения момента
B = A(:,2:4); % столбцы с моментами
B = mean(B,2); % среднее по срокам
M = [A(:,1) B]; % результирующая матрица
%Формирование матрицы F
i = A(:,1)';
F=[(i.*0+1); (i.^1); (i.^2); (i.^3); (i.^4); (i.^5); (i.^6)];
format longE
D=F';
%Транспонирование матрицы F
Mt_f=D';
Y1=[M(:,2)];
%Формирование матрицы Ф = F^T*F
F = Mt_f*D;
%Формируем вектор r
r=Mt_f*Y1;
%Находим коэффициент ai
a = F \ r;
%Составление математическоей модели
'Y=a(1,1)+a(1,2)*w+a(1,3)*w^2+a(1,4)*w^3+a(1,5)*w^4+a(1,6)*w^5+a(1,7)*w^6';
%Решение уравнения
a = a(end:-1:1);
Y = polyval(a, A(:,1));
%Рисуем график
y1 = M(:,2);
plot(1:length(y1), y1, 'o', 1:length(Y), Y,'b')
grid on
legend('исходные','рассчитаные')
%пределы по осям
xlim([1 30])
ylim([270 570])
0
Миниатюры
Моделирование двигателя постоянного тока с независимым возбуждением   Моделирование двигателя постоянного тока с независимым возбуждением  
5106 / 3445 / 354
Регистрация: 02.04.2012
Сообщений: 6,364
Записей в блоге: 16
16.02.2013, 17:43 19
Я пока не могу сообразить, что именно делают матричные выражения какой в них смысл. Возможно их можно заменить какой-то одной ф-цией матлаба
В понедельник выгляну с ПК и гляну детальней

Добавлено через 4 минуты
*Кстать, на предложенном мной варианте, как я вижу, все три графика совпадают! или я ошибаюсь?
0
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 56
16.02.2013, 17:48  [ТС] 20
да практически совпадают так как разброс значений моментов в исходной матрице минимален
в моём же варианте измерения моментов (см табл в послед кон) сильно отличаются иногда на 2 десятка

дальше с математикой вопрос, необходимо посчитать дисперсии отклика по формуле см на фото которые характеризуют разброс значений моментов.
0
Миниатюры
Моделирование двигателя постоянного тока с независимым возбуждением  
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.02.2013, 17:48

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Электрическая цепь постоЯННОГО тока
Пытаюсь смоделировать простейшую цепь из ЭДС постоянного тока и активного сопротивления (Matlab...

Генератор постоянного тока в симулинке
всем привет я новичек :help: помоогите пожалуйста смоделиревать генератор постоянного тока с...

Моделирование работы двигателя
Как установить в simulink работу асинхронного двигателя Asynchronous Machine SI Units на...

Подбор датчиков мониторинга параметров двигателя постоянного тока с независимым возбуждением
Требуется подобрать датчики для снятия следующих параметров с подъемной машины (2 ДПТ НВ): 1....


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.