首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >matlab代码块接受值的Simulink

matlab代码块接受值的Simulink
EN

Stack Overflow用户
提问于 2016-01-24 22:46:07
回答 1查看 551关注 0票数 0

我有以下的Simulink模型: DC/AC半桥逆变器,它使用脉宽调制块(在绿帧内)来产生IGBT的开关信号,来自块的(在红色帧内)使用Goto块接收来自的信号,然后将它作为输出传递给IGBT。

我正在尝试使用Matlab代码构建一个自定义PWM:

代码语言:javascript
复制
clc;
close all;
clear all;
t=0:0.001:1;
s=sawtooth(2*pi*10*t+pi);
m=0.75*sin(2*pi*1*t);
n=length(s);
for i=1:n
    if (m(i)>=s(i))
        pwm(i)=1;
    elseif (m(i)<=s(i))
        pwm(i)=0;
    end
end
plot(t,pwm,'-g',t,m,'--r',t,s,'--b');
grid on;
ylabel('Amplitude');
xlabel('Time index');
title('PWM Wave');
axis([0 1 -1.5 1.5]);

下面是这个阴谋的结果:

我的问题:

我知道t包含时间值, pwm 包含脉宽调制值,所以我想知道如何从Matlab代码中“以某种方式”将数据重定向到IGBT中,这样我就可以将它们作为开关信号使用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-24 23:25:01

这样做有多种方法,但最简单的方法是只使用来自工作空间块作为PWM Generator (2 Pulses)块的直接替代。

运行MATLAB代码来定义MATLAB中的变量,并且(假设您的G1_1G2_1信号是相互否定的)使用[t(:) pwm(:) ~pwm(:)]作为块的数据参数。

还要注意,您不需要代码中的循环:

代码语言:javascript
复制
pwm = (m >= s);

或者,如果您需要它们是双倍而不是逻辑,那么

代码语言:javascript
复制
pwm = double(m >= s);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34982495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档