在matlab中simulink的fromworkplace建立输入信号问题

2024-12-22 01:05:43
推荐回答(1个)
回答1:

这一句:

fin=[[0:1/2000:1/2000][1:-1/500:1/500]];

语法不对,主要问题是“][”不能连在一起,可以在中间加空格或逗号,如

fin=[[0:1/2000:1/2000] [1:-1/500:1/500]];

或者

fin=[[0:1/2000:1/2000],[1:-1/500:1/500]];

都可以。意思是由两个向量拼接成为一个更大的向量fin。这两个向量分别是0:1/2000:1/2000和1:-1/500:1/500,都是按照“开始值:步长:结束值”的格式写的,属于MATLAB最基础的内容,没更多可解释的了。

 

不过根据后面的代码看,表达式很可能写错了,猜测作者本意(这个不是语法错误,只能猜测),前一个向量应改为0:1/2000:1-1/2000,这样生成的向量有2000个元素,再加上1:-1/500:1/500有500个元素,拼接到一起就是2500个元素。

 

接下来的两句

t=0:4999;
value=[fin fin];

生成一个时间向量t(有5000个元素),value由两个fin拼接,也有5000个元素,每个时间对应一个数据的值,就可以作为输入信号了。

 

不过,最后一句

jaws=[t'value'];

又错了,同样是语法错误,中间缺少一个空格或逗号,即应为

jaws=[t' value'];

意思是,两个行向量t和value转置成列向量再拼接,成为5000x2的矩阵,刚好符合from workplace模块的要求。

 

完整的代码应为

fin=[[0:1/2000:1-1/2000],[1:-1/500:1/500]];
t=0:4999;value=[fin fin];
jaws=[t' value'];

如果用

plot(t,value)

画一下输入信号的形状,如图所示

最后应该说明一下,要产生这样的锯齿波,Simulink中完全有很多更好的方式,上面的做法实在算不上高明。