我有两个具有相同变量的表。一个表包含一行,而另一个表包含多行。
a=[1 2; 2 3],b=[2 3; 1 2]
S1=table(a,b)
a=[1 1],b=[1 1]
S2=table(a,b)
if all(S2{:,:}<S1{:,:}) & any(S2{:,:}<=S1{:,:})
S1=[S1;S2]
end
指定表格或单元格的错误在哪里?甚至转换table2cell,table2struct,table2array都不起作用(显示了getvar错误)。
表值是固定的。没有添加,没有替换,但仅在条件满足时附加。最终输出是具有如图所示值的表。
S1 = 3×2 table
a b
______ ______
1 2 2 3
2 3 1 2
1 1 1 1
答案 0 :(得分:1)
错误是由于您尝试比较具有不同大小的两组数据(S1
和S2
)。
S2{:,:}
1 1 1 1
S1{:,:}
1 2 2 3
2 3 1 2
如果您想将S1
的每一行与S2
进行比较,可以使用bsxfun函数:
检查S2 < S1
bsxfun(@lt,S2{:,:},S1{:,:})
检查S2 <= S1
bsxfun(@le,S2{:,:},S1{:,:})
这将导致:
if all(bsxfun(@lt,S2{:,:},S1{:,:})) & any(bsxfun(@le,S2{:,:},S1{:,:}))
S1=[S1;S2]
end