2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Вытащить элемент из массива проверить на условие
Сообщение06.10.2019, 08:12 


06/10/19
5
Здравствуйте. Стоит такая задача построить характеристики асинхронного двигателя. В зависимости от скольжения s разные формулы для расчета. Как правильно реализовать? Имеется вот такой код, но ничего не работает.
Код:
M_k=84.587;
M_k1=-214.238;
s_k=0.497;
s_k1=-0.497;
a=0.874;
w_0=104.72;

for s=-0.5:0.001:2
    w=w_0 *(1-s);
    if (s<0)
        M=(2*M_k1*(1+a*s_k1))./(s./s_k1+s_k1./s+2*a*s_k1);
    elseif (s==0)
        M=0;
    elseif (s>0)
        M=(2*M_k*(1+a*s_k))./(s./s_k+s_k./s+2.*a*s_k);
    end
end
plot(M,w,'r',-M,-w,'b');


Должно получиться вот такое по форме
Изображение радикал

 Профиль  
                  
 
 Re: Вытащить элемент из массива проверить на условие
Сообщение06.10.2019, 08:16 


10/03/16
3995
Aeroport
Какую размерность имеет ваш массив $M$?

 Профиль  
                  
 
 Re: Вытащить элемент из массива проверить на условие
Сообщение06.10.2019, 08:21 


06/10/19
5
ozheredov в сообщении #1419336 писал(а):
Какую размерность имеет ваш массив $M$?

Такая же размерность что и у массива s

 Профиль  
                  
 
 Re: Вытащить элемент из массива проверить на условие
Сообщение06.10.2019, 14:42 


10/03/16
3995
Aeroport
ilya1129 в сообщении #1419337 писал(а):
Такая же размерность что и у массива s


Это так должно быть. А теперь посмотрите, как у вас.

 Профиль  
                  
 
 Re: Вытащить элемент из массива проверить на условие
Сообщение06.10.2019, 18:00 


06/10/19
5
ozheredov в сообщении #1419361 писал(а):
ilya1129 в сообщении #1419337 писал(а):
Такая же размерность что и у массива s


Это так должно быть. А теперь посмотрите, как у вас.

Я определенно не могу найти ошибку.

 Профиль  
                  
 
 Re: Вытащить элемент из массива проверить на условие
Сообщение06.10.2019, 18:04 
Заслуженный участник


09/05/12
25179
ilya1129 в сообщении #1419431 писал(а):
Я определенно не могу найти ошибку.
Можно задать вопрос иначе: каким образом из вашего кода следует, что s - массив?

А M действительно имеет ту же размерность, это да. :mrgreen:

 Профиль  
                  
 
 Re: Вытащить элемент из массива проверить на условие
Сообщение06.10.2019, 18:14 


06/10/19
5
Pphantom в сообщении #1419433 писал(а):
ilya1129 в сообщении #1419431 писал(а):
Я определенно не могу найти ошибку.
Можно задать вопрос иначе: каким образом из вашего кода следует, что s - массив?

А M действительно имеет ту же размерность, это да. :mrgreen:

s=-0.5:0.001:2 вот из этого, от -0,5 с шагом 0,001 до 2
Вы уж сильно не ругайтесь, я ведь еще молодой и учусь только работать в этой дьявольски сложной программе)

 Профиль  
                  
 
 Re: Вытащить элемент из массива проверить на условие
Сообщение06.10.2019, 18:23 
Заслуженный участник


09/05/12
25179
ilya1129 в сообщении #1419435 писал(а):
s=-0.5:0.001:2 вот из этого, от -0,5 с шагом 0,001 до 2
Это не массив, это оператор цикла. Соответственно, переменная s - скаляр (и w и M - тоже). В итоге вы пытаетесь изобразить на графике две точки (что и получаете).

 Профиль  
                  
 
 Re: Вытащить элемент из массива проверить на условие
Сообщение06.10.2019, 18:30 


06/10/19
5
Pphantom в сообщении #1419437 писал(а):
ilya1129 в сообщении #1419435 писал(а):
s=-0.5:0.001:2 вот из этого, от -0,5 с шагом 0,001 до 2
Это не массив, это оператор цикла. Соответственно, переменная s - скаляр (и w и M - тоже). В итоге вы пытаетесь изобразить на графике две точки (что и получаете).

То есть нужно отказаться от цикла for и вынести s за него, но ведь s и останется скаляром

-- 06.10.2019, 22:34 --

Можно ли задать еще как-либо числа с определенным шагом, ведь есть вектор строка, но насколько я понял там нельзя ввести шаг а нужно вводить все элементы строки.У меня их многовато

 Профиль  
                  
 
 Re: Вытащить элемент из массива проверить на условие
Сообщение06.10.2019, 18:35 
Заслуженный участник


09/05/12
25179
ilya1129 в сообщении #1419439 писал(а):
То есть нужно отказаться от цикла for и вынести s за него, но ведь s и останется скаляром
Если написать s=-0.5:0.001:2, то получится желаемый массив. Однако при этом надо будет переписать то, что было в теле цикла. Я, в отличие от вас, в этой "дьявольски сложной программе" работать совершенно не умею (и не планирую учиться), поэтому аналог конструкции where, которой нужно будет заменить условные операторы, попробуйте найти сами. :mrgreen:

 Профиль  
                  
 
 Re: Вытащить элемент из массива проверить на условие
Сообщение06.10.2019, 21:24 


21/05/16
4292
Аделаида
Эта "дьявольски сложная программа", по видимому, зовется MATLAB.
Если да, то там можно так работать:
Код:
s=-0.5:0.001:2
for i=s
    итерация, i - очередной элемент в s
end

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group