Jump to content

    

peselnik

Участник
  • Content Count

    17
  • Joined

  • Last visited

Community Reputation

0 Обычный

About peselnik

  • Rank
    Участник

Recent Profile Visitors

642 profile views
  1. Причина как раз понятна. В вашем простом примере нет ни одного состояния (регистра, Unit Delay). Когда логика полностью stateless, генератор кода не генерирует дополнительные порты. Как сказали выше, добавьте Unit Delay, А еще правильней - правой мышью по блоку MATLAB Function, HDL Code -> HDL Block Properties -> OutputPipeline поставить 1. Тогда модель не будет захламляться лишними блоками.
  2. По умолчанию размер входного буфера у объекта udp - 512 байт. Если пользовательский код не успевает прочитать из буфера, то данные перезаписываются. В документации к функции udp говорится о том, как поменять размер входного буфера, см. web(fullfile(docroot, 'instrument/udp.html')) и свойство InputBufferSize.
  3. Потому что для simulation target относительный путь другой. Код для simulation target генерируется в директорию slprj. Ну, а вообще, вы что-то делаете не так. Если вам нужны #include в сгенерированном коде, то наверное, вы вызываете функции из вашего ручного код (судя по всему, из MATLAB Function или Stateflow). Для этого есть команда coder.cinclude. Ну и само выражение #include example.c это прямо плохо-плохо по нескольким причинам (не буду в это вдаваться). Если нужно подключить ручной С код к процессу сборку модели, то есть настройка Additional Build Information -> Source files.
  4. Добрый день! Можно использовать тулбокс Simulink Test, он как раз для этого предназначен - получится очень красиво: https://www.youtube.com/watch?v=MDwmagBZnhE
  5. Давайте самостоятельно, это уже перестает быть интересным.
  6. А делает ли она то, что вы хотите? out = complex(zrf(1:2:200,:),zrf(2:2:200,:)) Но я бы лучше поискал возможность сделать так, чтобы матрица для БПФ-32 сразу формировалась в нужном виде. Эти поэлементные умножения и конкатенации матриц выглядят не по-матлабовски.
  7. Конечно, читайте help, особенно по Control System Toolbox (и примеры в документации) - там все разжевано.
  8. Такая запись должна работать для скалярных n. Если у вас n - вектор (MATLAB же), то лучше как-то так: function h = myfun(n) h = sin(n)./n; h(n == 0) = 1/pi; А потом можно делать так: plot(myfun(-2:0.1:2))
  9. Ага, а еще вам нужна миллиметровка и карандаш :) coef = tf([1 1],[0.5 1 1]); bode(coef) А вы покажите, как вы пробовали, а мы поможем...
  10. В первом случае xc является массивом, а во втором случае - скаляром (в цикле xc постоянно перезаписывается). Соответствующие результаты на графике plot.
  11. Это нормально. Если посмотреть код функции fft2, то она вызывает либо fftn, либо fft. В первом случае вызывается fftn, потому что на входе матрица. Во втором случае вызывается fft, потому что на входе не матрица. Обе функции fftn и fft - встроенные в MATLAB и обращаются к библиотеке FFTW. О вычислительной разнице между одномерным и многомерным преобразованием написано в документации FFTW: http://www.fftw.org/fftw3_doc/Multi_002ddi...Transforms.html
  12. Есть несколько вариантов, как это сделать. Один из вариантов - скомпилировать ваш C++ код отдельно в виде библиотеки (dll), а затем вызывать библиотечные функции из S-функции. О том, как вызывать функции из разделяемой библиотеки в Simulink, я написал здесь: http://www.mathworks.com/matlabcentral/fil...ink_shrlib.html S-Function Builder это не лучший подход в данном случае, когда нужно передавать S-функцию заказчику. Я бы рекомендовал Legacy Code Tool или блок MATLAB System (больше информации по ссылке выше). === Центр компетенций MathWorks в России www.MATLAB.ru
  13. Привет! Да, есть такие :) Более того, исходя из моего опыта, в первую очередь пользуются Embedded Coder как раз для генерации производственного кода, а не побаловаться. Слишком серьезная "игрушка", чтобы ей баловаться. Это как раз одна из причин, почему не так много (по сравнению с MATLAB или Simulink) тех, кто в этом разбирается. Ну, не home use это - что поделать. Я могу посоветовать обратиться в центр компетенции MathWorks в России (сайт matlab.ru) - там есть инженеры, помогут.
  14. Привет! Тебе помогут who, whos. http://www.mathworks.com/help/techdoc/ref/who.html Кстати, команда load выгружает данные ИЗ mat файла в workspace, а не В mat файл :)