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

Не могу разобраться с 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
Ссылка на сообщение
Поделиться на другие сайты

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

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



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

    • Иван192837465
      От Иван192837465
      Нужно выполнить два скрипта. Лаба по ТАУ) При выполнении первого выдает ошибку: 
       
      Error: Function definitions are not permitted in this context.
       
      SCRIPT 1:
       
       function F=Azveno(t,y)
       F=[4-0.2*y];
       
       
       
       
       
      SCRIPT 2:
       
      >>Y0=[0];
      >>[t,y]=ode45('Azveno',[0  25],Y0);
      >>plot(t,y);grid on
       
       
      Помогите пж) Не понимаю что надо делать...
       
×
×
  • Создать...