блок 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 Применить указанное выражение к входу. Входными данными для блока являются выходные данные блока БПФ, который содержит комплексные двойные значения из 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