Перейти к содержанию

Не могу разобраться с Matlab


ВикторТёркин

Рекомендуемые сообщения

Для выполнения лабораторной работы по ТАУ (Исследование устойчивости по Гурвицу) нужно использовать:

function [Ust, Mnrs, Mtrx] = raus_gur(D)

 

  if isa(D,'tf')

   [~,D]=tfdata(D,'v');

  end

  n=length(D)-2;

  Dr=[D zeros(1,n)];

A=flipud(reshape(Dr,2,[]));

Mtrx=cell2mat(arrayfun(@(x)(circshift(A',x))',(0:n/2)',"UniformOutput",false));

Mnrs=cell2mat(arrayfun(@(x)det(Mtrx(1:x,1:x)),(2:n)',"UniformOutput",false));

Z='';

if any(Mnrs<0)

    Z='не ';

end

Ust=['система ',Z,'устойчива'];

end

Но при вводе всегда выдаёт ошибку

??? function [Ust, Mnrs, Mtrx] = raus_gur(D)
Error: Function definitions are not permitted in this context. Версия матлаб 7.11.0(R2010b)

Ссылка на комментарий
Поделиться на другие сайты

@ВикторТёркин, поиском пользоваться не пробовали?

Вы пытаетесь определить функцию.

В вашей версии матлаб функция определяется в отдельном файле с расширением .m и именем, совпадающем с именем функции. То есть в вашем случае raus_gur.m

  • Like (+1) 1
Ссылка на комментарий
Поделиться на другие сайты

7 часов назад, andrew75 сказал:

@ВикторТёркин, поиском пользоваться не пробовали?

Вы пытаетесь определить функцию.

В вашей версии матлаб функция определяется в отдельном файле с расширением .m и именем, совпадающем с именем функции. То есть в вашем случае raus_gur.m

Спасибо. Видимо, плохо пользовался. Но теперь выдаёт такую ошибки Error: File: raus_gur.m Line: 8 Column: 56 и The input character is not valid in MATLAB statements or expressions.

Получается, что присутствуют недопустимые символы? Предлагается вариант решения проблемы - на английской раскладке ввести символы заново, но тщетно. Либо просто в  самом коде ошибка?

function [Ust, Mnrs, Mtrx] = raus_gur(D)
if isa(D,'tf')
   [~,D]=tfdata(D,'v');
end
n=length(D)-2;
Dr=[D zeros(1,n)];
A=flipud(reshape(Dr,2,[]));
Mtrx=cell2mat(arrayfun(@(x)(circshift(A',x))',(0:n/2)',"UniformOutput",false));
Mnrs=cell2mat(arrayfun(@(x)det(Mtrx(1:x,1:x)),(2:n)',"UniformOutput",false));
Z='';
if any(Mnrs<0)
    Z='не ';
end
Ust=['система ',Z,'устойчива'];
end
 

Ссылка на комментарий
Поделиться на другие сайты

Отсчитываете 56-й символ в 8 строке. Видите что это двойная кавычка. Используете поиск и узнаете что использовать двойные кавычки можно только с версии 2017а.

 

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

Изменено пользователем andrew75
  • Like (+1) 1
Ссылка на комментарий
Поделиться на другие сайты

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
  • Похожий контент

    • Malus_Vir
      От Malus_Vir
      Здравствуйте
      Заметил, что ПК начал шуметь, запустил Cureit, нашел вирус, но не смог его удалить.
       
       
       
      Логи прикрепил:
       
      CollectionLog-2025.01.09-01.55.zip
    • Holikokl
      От Holikokl
      dr.web cureit нашел эту прогу и не может удалить. Вчера испробовал много способов после чего вроде удалил и др веб его не видит но до сих пор нагружается процессор и оперативка
    • Dad Paul
      От Dad Paul
      Вопреки всем предупреждениям и блокировкам, решил скачать читы на PUBG. В итоге-читы так и не получилось поставить,а вирусы получил. Видимых изменений в системе не наблюдаю, но каждые 5-15 минут находит вирусы трояна(разные),лечит\удаляет и всё по новой. Помогите избавиться


      avz_log.txt Addition.txt FRST.txt
    • EuroMan
      От EuroMan
      не могу это удалить мне пишется нужна перезагрузка и тд а когда я перезагружаю и проверяю оно остается

    • mqxsn
      От mqxsn
      Здравствуйте, чудом поймал вирус. Касперский пытается вылечит но после удаления появляется снова.
      Логи не смог получить тк не нашел их.
×
×
  • Создать...