Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Ошибка в Мatlab

VicVers Ученик (144), открыт 2 недели назад
Error: File: raus_gur.m Line: 8 Column: 56
The input character is not valid in MATLAB statements or expressions.
Помогите разобраться. Создаю м-файл по методичке, нажимаю run - и выдаёт такую ошибку. Вроде, должно фикситься тем, что нужно просто заново ввести символы на английской раскладке, но ошибка повторяется.
>> 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
3 ответа
0 1 Профи (726) 2 недели назад
Будьте добры скинуть весь код и желательно сказать что за язык. Я попробую помочь!
0 1Профи (726) 2 недели назад
Попробуйте сделать вот так:
Mtrx=cell2mat(arrayfun(@(x)(circshift(A,'x')),(0:n/2),"UniformOutput",false));
0 1Профи (726) 2 недели назад
Mtrx=cell2mat(arrayfun(@(x)(circshift(A,x)),(0:n/2),"UniformOutput",false));
0 1Профи (726) 2 недели назад
Или вот так. Так же строку ниже вот так:
 Mnrs=cell2mat(arrayfun(@(x)det(Mtrx(1:x,1:x)),(2:n),"UniformOutput",false));  
0 1Профи (726) 2 недели назад
Весь код должен выглядеть примерно вот так:
```MATLAB
0 1Профи (726) 2 недели назад
 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=['Cистема ',Z,'устойчива'];
end
0 1Профи (726) 2 недели назад
Или вот так:
```MATLAB
0 1Профи (726) 2 недели назад
 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
VicVers Ученик (144) 0 1, спасибо большое за такую вовлечённость, но всё равно та же ошибка, только в "Coloumn" видно смещение. ??? Error: File: raus_gur.m Line: 8 Column: 55 The input character is not valid in MATLAB statements or expressions. уж не знаю, может, уже дело в самой версии матлаб. старый 7.11.0 (R2010b), но вариантов нет. нужно в ней сделать
0 1Профи (726) 2 недели назад
Сейчас скину код.
0 1Профи (726) 2 недели назад
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]), (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
VicVers Ученик (144) 0 1, ??? Input argument "D" is undefined. Error in ==> raus_gur at 2 if isa(D, 'tf')
0 1Профи (726) 2 недели назад
Так вы не передали туда нужные аргументы.
VicVers Ученик (144) 0 1, простите, но уже совсем не соображаю. мне необходимо ввести, например, что-то вроде D = [0.6 0] ?
VicVersУченик (144) 2 недели назад
спасибо. как-то, да заработала. просто ответ выдаёт такой (изменил данные на [30 0] а необходимо подобие такому
Иван Сигаев Искусственный Интеллект (150241) 2 недели назад
Попробуй заменить кавычки на одинарные


Mtrx=cell2mat(arrayfun(@(x)(circshift(A',x))',(0:n/2)','UniformOutput',false));
VicVersУченик (144) 2 недели назад
Не вышло
Иван Сигаев Искусственный Интеллект (150241) Что не вышло? Теперь какую ошибку пишет?
VicVersУченик (144) 2 недели назад
??? Error: File: raus_gur.m Line: 8 Column: 56
The input character is not valid in MATLAB statements or expressions.
Иван Сигаев Искусственный Интеллект (150241) Это после исправления? ради эксперимента заменить строки A=flipud(reshape(Dr,2,[])); Mtrx=cell2mat(arrayfun(@(x)(circshift(A',x))',(0:n/2)',"UniformOutput",false)); на A=flipud(reshape(Dr,2,[])); AB=flipud(reshape(Dr,2,[])); Mtrx=cell2mat(arrayfun(@(x)(circshift(A',x))',(0:n/2)','UniformOutput',false)); Ошибка не меняется?
VicVersУченик (144) 2 недели назад
изменилась
??? Error: File: raus_gur.m Line: 10 Column: 54
The input character is not valid in MATLAB statements or expressions.
Иван Сигаев Искусственный Интеллект (150241) Теперь ругается на следующую строку Mnrs=cell2mat(arrayfun(@(x)det(Mtrx(1:x,1:x)),(2:n)',"UniformOutput",false)); ----------------------------------------------------------------------^ 54 символ
Centurio Просветленный (30559) 2 недели назад
Вы каким образом обращаетесь к функции? Напишите, как вы задаёте и вводите аргументы.
У меня всё работает нормально по примеру из Википедии, откуда вы код взяли:

format shortG
[A, B, C] = raus_gur([1 16 95 260 324 144])
VicVersУченик (144) 2 недели назад
код взял из методички к лабораторной. скиньте, пожалуйста, ссылку на страницу википедии
Centurio Просветленный (30559) VicVers, вы проверили пример на своём коде?
Похожие вопросы