怎么把workspace的数据导入到simulink查看波形?

发布时间:2024年01月12日

仿真截图;

示例代码:

sampleTime = 0.001;                  %设置采样时间
numSteps = 1/sampleTimes;        %设置时间矩阵长度     
time = sampleTime*(0:numSteps-1);    %定义时间矩阵
time = time';                        %时间矩阵转置
data = sin(2*pi/3*time);             %设置与时间相关信号
simin = timeseries(data,time);      %赋值给simin,与simulink名称对应

设置simulink中from workspace 模块的采样时间与示波器的采样时间,与matlab代码对应,以上示例均为0.001;先创建脚本,运行脚本,然后建立simulink仿真,运行仿真,查看仿真波形。如下所示。

此时数据是依照time生成的,假如我们只有一个数据,从示波器导出的,并没有时间这个数组,又该怎么导入到simulink呢 ?

比如有一个10000个点的数据,如下图所示,这是两个正弦信号叠加产生,此时没有时间维度信号。但是由于是从示波器导出的,我们知道示波器的采样频率,此时是10k。

此时仅需要对time数据进行重构即可,这个数据在workspace里面名称是S。

sampleTime = 0.001;                  %设置采样时间
numSteps = 1/sampleTimes + 1;        %设置时间矩阵长度     
time = sampleTime*(0:numSteps-1);    %定义时间矩阵
time = time';                        %时间矩阵转置
data = S;             %设置与时间相关信号
simin = timeseries(data,time);      %赋值给simin,与simulink名称对应

然后再运行仿真即可,注意还是需要调整采样时间和仿真时长再仿真。

以上数据均为10000个点对应1s去构造的,假如10000个点,只有0.1s,此时如何去处理呢?代码如下,主要是要对time矩阵进行特殊处理,并且相应更改采样时间。比如 time矩阵构造就应该是 采样时间 * 数据点数。


Fs = 100000;            % 假设采样频率为 1000 Hz
T = 1/Fs;               % Sampling period
L =100000;              % 数据点数

t = (0:L-1)*T;          % Time vector
S = sin(2*pi*50*t) + 1.2*sin(2*pi*100*t)+ 0.3*sin(2*pi*200*t);
S1 = S(1:10000);        % 取前0.1s的数据

data =S1';                                   % 设置输入数据
L_data = length(data);                       %计算数据长度
sampleTime = 1/100000;                       %设置采样时间
numSteps = L_data;                           %设置时间矩阵长度     
time = sampleTime*(0:numSteps-1);            %定义时间矩阵
time = time';                                %时间矩阵转置

simin = timeseries(data,time);      %赋值给simin,与simulink名称对应

然后还是调整采样时间和仿真时长再仿真。波形如下图所示,整个时间是0.1s,采样时间是1/100000。

文章来源:https://blog.csdn.net/sy243772901/article/details/135556865
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。