背景
有项目算法使用matlab中isequal函数进行运算,这里需要将转化为C语言,从而模拟算法运行,将算法移植到qt。
MATLAB中isequal简单介绍
语法
tf = isequal(A,B)
tf = isequal(A1,A2,...,An)
说明
如果 A 和 B 等效,则 tf = isequal(A,B) 返回逻辑值 1 (true);否则,返回逻辑值 0 (false)。有关每种数据类型的等效性的定义,请参阅输入参数部分。NaN(非数字)、NaT(非时间)、未定义的分类元素和 <missing> 值被视为与其他元素不相等,彼此之间也不相等。
要将 NaN、NaT、<undefined> 和 <missing> 值视为与其他此类值相等,请使用 isequaln。
示例
如果所有输入是等效的,则 tf = isequal(A1,A2,...,An) 返回逻辑值 1 (true)。
比较两个数值矩阵
创建两个数值矩阵并比较其相等性。
A = zeros(3,3)+1e-20;
B = zeros(3,3);
tf = isequal(A,B)
tf = logical
0
函数返回逻辑值 0 (false),因为这两个矩阵有些许不同,并非完全相等。
比较两个结构体
A = struct('field1',0.005,'field2',2500);
B = struct('field2',2500,'field1',0.005);
比较结构体的相等性。
tf = isequal(A,B)
tf = logical
1
即使每个结构体中的字段顺序不同,isequal 也将这些字段视为相同,因为它们的值相等。
实际使用场景
A=[1 2 3 4 5 6]
B=[1 2 3 4 5 6]
isequal(A,B)
>>
>> A=[1 2 3 4 5 6]
B=[1 2 3 4 5 6]
isequal(A,B)
A =
1 2 3 4 5 6
B =
1 2 3 4 5 6
ans =
1
C语言实现
代码如下所示
int iseual(unsigned char *pA, unsigned char *pB, unsigned int m, unsigned int n) {
int i, j;
for(i = 0; i < m; i++)
{
for(j = 0; j < n; j++)
{
if(pA[i][j] != pB[i][j])
return 0;
}
}
return 1;
}