来自非单元阵列对象的表比较单元格内容引用

时间:2018-01-03 04:18:38

标签: matlab cell-array

我有两个具有相同变量的表。一个表包含一行,而另一个表包含多行。

    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

1 个答案:

答案 0 :(得分:1)

错误是由于您尝试比较具有不同大小的两组数据(S1S2)。

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