使用Matlab嵌入函数生成方波

时间:2014-01-21 05:06:51

标签: matlab signal-processing simulation simulink pwm

我打算生成一个应用在DSP上的方波。

我已经编写了这些代码并将它们放入嵌入式Matlab函数中。

function y = fcn(u)
    %#eml
t=0:0.001:1

h = sign(sin(125600*t+u));

y= (h+1)/2

其中,u 0.582 的常数值,用于移动方波。

问题在于模拟中的输出,而不是获得方波,我只看到y=o and y=1的两条直线。

请让我知道我无法获得方波的问题在哪里?

请注意,方波的频率必须为20 kHz。因此,我将采样时间调整为1e-7 s。并且它的幅度在0和1之间另外,由于这个信号必须传送到DSP板,在“求解器选项”中我选择了类型:“固定步”和解算器:“离散(不继续)状态)”。

非常感谢。

2 个答案:

答案 0 :(得分:1)

这在许多层面都是错误的。

首先,你永远不会在MATLAB函数中定义时间向量,这就是Simulink引擎的作用。将时间作为MATLAB功能块的输入,并使用时钟块生成时间输入。

其次,上面的模拟很好,但听起来你正在从Simulink模型生成C代码,以便在DSP上(实时)运行它。这不是我的专业领域,但是从内存来看,我认为你需要启用“绝对时间”或类似的东西才能使用代码生成。但是,我认为这是依赖于目标的,因此我不确定这是否适用于您的DSP。

答案 1 :(得分:0)

在最后的函数类型plot(t,y)中。你正在产生一个20khz的方波(假设你在1e-7采样)。基本上你的生成它是有效的。

现在,您正在使用的DSP板/与您的问题相关的任何信息是什么?

当你说“解决者”时,我不知道你指的是什么。

“模拟”是示波器还是程序?无论哪种方式,也许它没有正确触发?是否有边缘触发选项?