2014 dxdy logo

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

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




 
 Вытащить элемент из массива проверить на условие
Сообщение06.10.2019, 08:12 
Здравствуйте. Стоит такая задача построить характеристики асинхронного двигателя. В зависимости от скольжения 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 
Какую размерность имеет ваш массив $M$?

 
 
 
 Re: Вытащить элемент из массива проверить на условие
Сообщение06.10.2019, 08:21 
ozheredov в сообщении #1419336 писал(а):
Какую размерность имеет ваш массив $M$?

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

 
 
 
 Re: Вытащить элемент из массива проверить на условие
Сообщение06.10.2019, 14:42 
ilya1129 в сообщении #1419337 писал(а):
Такая же размерность что и у массива s


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

 
 
 
 Re: Вытащить элемент из массива проверить на условие
Сообщение06.10.2019, 18:00 
ozheredov в сообщении #1419361 писал(а):
ilya1129 в сообщении #1419337 писал(а):
Такая же размерность что и у массива s


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

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

 
 
 
 Re: Вытащить элемент из массива проверить на условие
Сообщение06.10.2019, 18:04 
ilya1129 в сообщении #1419431 писал(а):
Я определенно не могу найти ошибку.
Можно задать вопрос иначе: каким образом из вашего кода следует, что s - массив?

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

 
 
 
 Re: Вытащить элемент из массива проверить на условие
Сообщение06.10.2019, 18:14 
Pphantom в сообщении #1419433 писал(а):
ilya1129 в сообщении #1419431 писал(а):
Я определенно не могу найти ошибку.
Можно задать вопрос иначе: каким образом из вашего кода следует, что s - массив?

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

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

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

 
 
 
 Re: Вытащить элемент из массива проверить на условие
Сообщение06.10.2019, 18:30 
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 
ilya1129 в сообщении #1419439 писал(а):
То есть нужно отказаться от цикла for и вынести s за него, но ведь s и останется скаляром
Если написать s=-0.5:0.001:2, то получится желаемый массив. Однако при этом надо будет переписать то, что было в теле цикла. Я, в отличие от вас, в этой "дьявольски сложной программе" работать совершенно не умею (и не планирую учиться), поэтому аналог конструкции where, которой нужно будет заменить условные операторы, попробуйте найти сами. :mrgreen:

 
 
 
 Re: Вытащить элемент из массива проверить на условие
Сообщение06.10.2019, 21:24 
Эта "дьявольски сложная программа", по видимому, зовется MATLAB.
Если да, то там можно так работать:
Код:
s=-0.5:0.001:2
for i=s
    итерация, i - очередной элемент в s
end

 
 
 [ Сообщений: 11 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group