Matlab 如何确定结构和单元数组之间的相等性
我不明白为什么Matlab 如何确定结构和单元数组之间的相等性,matlab,comparison,equality,Matlab,Comparison,Equality,我不明白为什么isequal在以下两种用例中不起作用: >> tempStruct = struct('a', 1, 'b', 2, 'c', 3) tempStruct = scalar structure containing the fields: a = 1 b = 2 c = 3 >> tempCArray = {1 2 3} tempCArray = { [1,1] = 1 [1,2] = 2 [1,
isequal
在以下两种用例中不起作用:
>> tempStruct = struct('a', 1, 'b', 2, 'c', 3)
tempStruct =
scalar structure containing the fields:
a = 1
b = 2
c = 3
>> tempCArray = {1 2 3}
tempCArray =
{
[1,1] = 1
[1,2] = 2
[1,3] = 3
}
在我看来,tempStruct
和tempCArray
在概念上是相等的,但是
>> isequal(tempStruct, tempCArray)
ans = 0
如果说这是因为tempStruct
的索引结构不同于tempCArray
,是否正确?例如:
>> tempStruct(2)
error: A(I): index out of bounds; value 2 out of bound 1
>> tempCArray(2)
ans =
{
[1,1] = 2
}
但是,我尝试将tempStruct
转换为单元格数组:
>> struct2cell(tempStruct)
ans =
{
[1,1] = 1
[2,1] = 2
[3,1] = 3
}
现在看起来与tempCArray
相同。然而
>> isequal(struct2cell(tempStruct), tempCArray)
ans = 0
为什么会发生这种情况?struct2cell(tempStruct)
和tempCArray
不相同
- 在
中,索引为tempCArray
李>[1,1]、[1,2]、[1,3]
- 在
中,索引是struct2cell(tempStruct)
[1,1],[2,1],[3,1]
tempCArray
是行单元格向量,而struct2cell(tempStruct)
是列单元格向量
如果希望两者相等,请执行以下操作:
>> isequal(struct2cell(tempStruct)', tempCArray)
ans = 1
如果使用“
”转置任一单元格数组,则它们将相等
编辑:
如果希望不区分行/列,请使用以下代码:
tempStructCell = struct2cell(tempStruct);
isequal(tempStructCell(:), tempCArray(:));
struct2cell(tempStruct)
和tempCArray
不相同
- 在
中,索引为tempCArray
李>[1,1]、[1,2]、[1,3]
- 在
中,索引是struct2cell(tempStruct)
[1,1],[2,1],[3,1]
tempCArray
是行单元格向量,而struct2cell(tempStruct)
是列单元格向量
如果希望两者相等,请执行以下操作:
>> isequal(struct2cell(tempStruct)', tempCArray)
ans = 1
如果使用“
”转置任一单元格数组,则它们将相等
编辑:
如果希望不区分行/列,请使用以下代码:
tempStructCell = struct2cell(tempStruct);
isequal(tempStructCell(:), tempCArray(:));
struct2cell(tempStruct)
和tempCArray
不相同
- 在
中,索引为tempCArray
李>[1,1]、[1,2]、[1,3]
- 在
中,索引是struct2cell(tempStruct)
[1,1],[2,1],[3,1]
tempCArray
是行单元格向量,而struct2cell(tempStruct)
是列单元格向量
如果希望两者相等,请执行以下操作:
>> isequal(struct2cell(tempStruct)', tempCArray)
ans = 1
如果使用“
”转置任一单元格数组,则它们将相等
编辑:
如果希望不区分行/列,请使用以下代码:
tempStructCell = struct2cell(tempStruct);
isequal(tempStructCell(:), tempCArray(:));
struct2cell(tempStruct)
和tempCArray
不相同
- 在
中,索引为tempCArray
李>[1,1]、[1,2]、[1,3]
- 在
中,索引是struct2cell(tempStruct)
[1,1],[2,1],[3,1]
tempCArray
是行单元格向量,而struct2cell(tempStruct)
是列单元格向量
如果希望两者相等,请执行以下操作:
>> isequal(struct2cell(tempStruct)', tempCArray)
ans = 1
如果使用“
”转置任一单元格数组,则它们将相等
编辑:
如果希望不区分行/列,请使用以下代码:
tempStructCell = struct2cell(tempStruct);
isequal(tempStructCell(:), tempCArray(:));
它们是不同类型的变量!如果您使用
tempstruct=struct('a',{1 2 3],'b',2,'c',3)
则tempstruct.a
将与{a b c}
相同,但单元格数组的结构不应等于单元格数组。它们是不同类型的变量!如果使用tempstruct=struct('a',{1 2 3],'b',2,'c',3)
那么tempstruct.a
将与{a b c}
相同,但单元格数组的结构不应等于单元格数组。它们是不同类型的变量!如果您使用tempstruct=struct('a',{1 2 3],'b',2,'c',3)
那么tempstruct.a
将与{a b c}相同
,但单元格数组的结构不应等于单元格数组。它们是不同类型的变量!如果您将tempstruct=struct('a',{1 2 3],'b',2,'c',3)
设置为tempstruct.a
将与{a b c}相同
,但单元格数组的结构不应等于单元格数组。有没有办法将这两种类型强制为行/列不可知的内容,即如果使用线性索引,两个单元格数组返回相同的值。我想另一种方法是找到一种向cell2struct
做的一样。您可以简单地使用restrape
从行到列进行更改,反之亦然。例如,tempStructCell
可以使用以下命令将列单元格向量转换为行单元格向量:tempStructCell=restrape(struct2cell(tempStruct),1,3)有没有办法将这两种类型强制为行/列不可知的类型,即如果使用线性索引,两个单元格数组返回相同的值。我想另一种方法是找到一种向struct2cell
提供维度参数的方法,就像为cell2struct提供维度参数一样e> 。您只需使用重塑
即可从行更改为列,反之亦然。例如,tempStructCell
可以使用以下命令从列转换为行单元格向量:tempStructCell=重塑(struct2cell(tempStruct),1,3)有没有办法将这两种类型强制为行/列不可知的类型,即如果使用线性索引,两个单元格数组返回相同的值。我想另一种方法是找到一种向struct2cell
提供维度参数的方法,就像为cell2struct提供维度参数一样e> 。您只需使用重塑
即可从行更改为列,反之亦然。例如,tempStructCell
可以从colu转换