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, Супермодераторы



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

Сейчас этот форум просматривают: wrest


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

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