仿真截图;
示例代码:
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。