查看: 438|回复: 6|关注: 0

[已解决] M function与from workspace联合使用问题

[复制链接]

新手

12 麦片

财富积分


050


1

主题

6

帖子

0

最佳答案

待处理曲线

待处理曲线

to workspace配置

to workspace配置

from workspace配置

from workspace配置

simulink连接方式

simulink连接方式
小弟最近在学习DFT滤波,由于DFT滤波前需要将连续的曲线进行离散化处理,所以我想到使用to/from workspace模块选择Sample time为1/6400进行离散连续曲线。由于对M function不太了解,打开M function后显示的是function y = fcn(u);y=u;但考虑到我的的M function的输入是数组,是不是这样写就不对了哈?请大神指导下M funtion如何调用离散后的数组数据。谢谢大家!祝大家新年快乐!

论坛优秀回答者

中级

939 麦片

财富积分


5001500


2

主题

785

帖子

169

最佳答案
  • 关注者: 18
发表于 2019-2-11 09:16:06 | 显示全部楼层
u可以是变量,也可以是数组。
你可以打开m function, 在上面的工具栏里面,选择 Edit Data, 来配置你输入的变量的size。
调用的时候,使用u(1)   u(2) ....来使用就可以了。

新手

12 麦片

财富积分


050


1

主题

6

帖子

0

最佳答案
 楼主| 发表于 2019-2-11 14:43:19 | 显示全部楼层
TCCMATLAB 发表于 2019-2-11 09:16
u可以是变量,也可以是数组。
你可以打开m function, 在上面的工具栏里面,选择 Edit Data, 来配置你输入 ...

    您好!老师,看过您很多的精品解答,感谢您在过年繁忙之余为我指导,辛苦老师了!
    我还存在一些疑问,就是我上传的输入函数u是一个由时间轴与数据轴构成的200964x2 double的数组矩阵。如下图所示:

图1

图1

第一列是时间轴,第二列是数值轴。我想做的是将第二列的第一行至第六行的数据相加,并将所得结果覆盖到第二列第六行的数据上。请问如何书写?应该不能用u(1)或u(2)了吧,因为u(1)、u(2)表示的是第一第二整列。请老师指导下,谢谢哈!

论坛优秀回答者

中级

939 麦片

财富积分


5001500


2

主题

785

帖子

169

最佳答案
  • 关注者: 18
发表于 2019-2-11 17:45:23 | 显示全部楼层
Q晴天G晴天R 发表于 2019-2-11 14:43
您好!老师,看过您很多的精品解答,感谢您在过年繁忙之余为我指导,辛苦老师了!
    我还存在一些 ...

考虑以下几个方面:
输入: 从数据格式看,经过from workspace模块之后,输出不是数组,是一个变量值。
    每个步长,输出一个数据给下游模块。

处理: 既然每个步长只有一个值,需要把前面计算的和保存下来,考虑使用unit delay或者data store memory 模块。如果是周期性的操作,可以使用for循环或while循环模块来处理。

输出: 如果想覆盖的话,可以尝试在处理之后,再输出给to worspace模块(与from workspace使用同一个变量名)。行不通,就尝试使用新的变量保存处理后的值吧。

新手

12 麦片

财富积分


050


1

主题

6

帖子

0

最佳答案
 楼主| 发表于 2019-2-11 19:20:23 | 显示全部楼层
TCCMATLAB 发表于 2019-2-11 17:45
考虑以下几个方面:
输入: 从数据格式看,经过from workspace模块之后,输出不是数组,是一个变量值。
  ...

老师您分析的很细致,针对您说的我模型的输入u是个变量,而不是数组(通过to/from workspace模块获取输入值u)。这样造成了处理上的复杂,那么有没有什么方法使我的输入就是个数组,我通过对数组的第n行第n列的值计算即可。

论坛优秀回答者

中级

939 麦片

财富积分


5001500


2

主题

785

帖子

169

最佳答案
  • 关注者: 18
发表于 2019-2-13 08:13:44 | 显示全部楼层 |此回复为最佳答案
Q晴天G晴天R 发表于 2019-2-11 19:20
老师您分析的很细致,针对您说的我模型的输入u是个变量,而不是数组(通过to/from workspace模块获取输入 ...

额,你只想处理数据的话(仅对数据进行操作,并不具体使用这些数据),没有必要使用Simulink。你直接使用MATLAB里面的脚本或者函数就行了。
Simulink主要是针对一些算法或者芯片仿真用的。

新手

12 麦片

财富积分


050


1

主题

6

帖子

0

最佳答案
 楼主| 发表于 2019-2-13 09:07:03 | 显示全部楼层
TCCMATLAB 发表于 2019-2-13 08:13
额,你只想处理数据的话(仅对数据进行操作,并不具体使用这些数据),没有必要使用Simulink。你直接使用 ...

好的哈,谢谢老师的解答,其实我处理完的数据后面还是要用的,这个滤波时我程序的一个中间环节,我再研究下哈
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表