Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

Simulink.sdi.compareSignals

比较两个 Simulink.sdi.Signal 对象中的数据

说明

示例

diff = Simulink.sdi.compareSignals(sigID1,sigID2) 比较与信号 ID sigID1sigID2 对应的信号,并将结果返回到 Simulink.sdi.DiffSignalResult 对象中。有关如何计算比较结果的详细信息,请参阅 How the Simulation Data Inspector Compares Data

示例

全部折叠

您可以使用仿真数据检查器编程接口比较一次运行中的信号。此示例比较飞机纵向控制器的输入和输出信号。

首先,加载包含数据的会话。

Simulink.sdi.load('AircraftExample.mldatx');

使用 Simulink.sdi.Run.getLatest 函数访问最后一次运行的数据。

aircraftRun = Simulink.sdi.Run.getLatest;

然后,您可以使用 Simulink.sdi.getSignalsByName 函数访问表示控制器输入的 Stick 信号和表示输出的 alpha, rad 信号。

stick = getSignalsByName(aircraftRun,'Stick');
alpha = getSignalsByName(aircraftRun,'alpha, rad');

在比较信号之前,您可以指定用于比较的容差值。比较使用在比较中为基线信号指定的容差值,因此请在 Stick 信号上设置绝对容差值 0.1

stick.AbsTol = 0.1;

现在,使用 Simulink.sdi.compareSignals 函数比较信号。Stick 信号是基线,alpha, rad 信号是要与基线进行比较的信号。

comparisonResults = Simulink.sdi.compareSignals(stick.ID,alpha.ID);
match = comparisonResults.Status
match = 
OutOfTolerance

比较结果超出容差范围。您可以使用 Simulink.sdi.view 函数打开仿真数据检查器来查看和分析比较结果。

此示例说明如何使用仿真数据检查器的 Simulink.sdi.compareSignals 函数比较一个信号在不同仿真运行中的结果。当您只有一个信号需要比较时,使用信号比较将直接返回 Simulink.sdi.diffSignalResult 对象及比较数据。

生成仿真数据

使用 slexAircraftExample 模型生成仿真运行。在各次运行之间,更改输入滤波器的时间常量。

% Load example model
load_system('slexAircraftExample')

% Mark the alpha, rad signal for streaming
Simulink.sdi.markSignalForStreaming('slexAircraftExample/Aircraft Dynamics Model',4,'on')

% Simulate system
out_1 = sim('slexAircraftExample');

% Change input filter time constant
modelWorkspace = get_param('slexAircraftExample','modelworkspace');
assignin(modelWorkspace,'Ts',0.2)

% Simulate again
out_2 = sim('slexAircraftExample');

获取用于信号比较的信号 ID

使用运行 ID 创建运行对象,然后使用 getSignalIDByIndex 获取要传递给 Simulink.sdi.compareSignals 的信号 ID。

% Get run data
runIDs = Simulink.sdi.getAllRunIDs;

runID1 = runIDs(end-1);
runID2 = runIDs(end);

run1 = Simulink.sdi.getRun(runID1);
run2 = Simulink.sdi.getRun(runID2);

sigID1 = getSignalIDByIndex(run1,1);
sigID2 = getSignalIDByIndex(run2,1);

比较信号

比较两个信号,然后打开仿真数据检查器查看结果。

diffResult = Simulink.sdi.compareSignals(sigID1,sigID2);

Simulink.sdi.view

输入参数

全部折叠

基线信号的信号 ID,指定为整数。创建一个运行时,仿真数据检查器会为每个信号赋予一个信号 ID。您可以使用以下函数之一获取信号的信号 ID:

要比较的信号的信号 ID,指定为整数。创建一个运行时,仿真数据检查器会为每个信号赋予一个信号 ID。您可以使用以下函数之一获取信号的信号 ID:

输出参数

全部折叠

信号比较结果,以 Simulink.sdi.DiffSignalResult 对象形式返回。复信号比较结果以包含两个 DiffSignalResult 对象的数组形式返回。DiffSignalResult 对象包含实数数据,另一个包含虚数数据。检查 DiffSignalResult 对象的 Name 属性,以确定它是包含实数还是虚数数据。

限制

仿真数据检查器不支持比较以下项:

  • int64uint64 数据类型的信号。

  • 可变大小信号。

在 R2011b 中推出