simulink блок за преобразуване на матрица

Имам 1x512 матрица "u", която трябва да преобразувам в 1x128, използвайки следната формула:

ua = u(1:128)+u(129:256)+u(257:384)+u(385:512)

Това работи в работното пространство, но не и в simulink. Опитах се да добавя функционален блок Fcn и получих тази грешка:

Error while parsing expression: u(1:128)+u(129:256)+u(257:384)+u(385:512)
in 'osverlapsave/Fcn' token ":" was found, where as ")" was expected

Намерих това в помощния файл на блок Fcn "този блок не поддържа оператора на двоеточие (:)."

Трябва ли да използвам различен тип блок?


person k3it    schedule 02.11.2014    source източник
comment
2 въпроса: защо трябва да правите това в Simulink? и можете ли да ни кажете кой точно блок сте използвали (не става ясно от въпроса ви) и какъв е действителният код, а също и какъв е входът към блока?   -  person am304    schedule 02.11.2014
comment
блокът се нарича Fcn Прилагане на определен израз към входа. Входът към блока е изходът на FFT блок, който съдържа 512 бина комплексни двойни стойности. от помощния файл u — Входът към блока. Ако u е вектор, u(i) представлява i-тия елемент на вектора; u(1) или u самостоятелно представлява първия елемент. По някаква причина блокът не разпознава оператора за обхват ':'   -  person k3it    schedule 02.11.2014
comment
Можете ли да проверите дали сигналът е действително с измерение 512? Подозирам, че не е... mathworks.co.uk/help/simulink/ug/   -  person am304    schedule 02.11.2014


Отговори (1)


Изглежда, че Fcn не приема : при индексиране, плюс това не приема сложни входове, само реални входове, така че не бих го използвал.

Вместо това бих предложил да използвате 4 блока селектор и да сумирате техните резултати с блок за суми, много по-лесно.

person am304    schedule 02.11.2014