MATLAB中有一个cell
数组
B =
[ 1708] [ 2392] '+'
[ 3394] [ 3660] '+'
[ 5490] [ 5743] '+'
[ 7555] [ 7809] '-'
[ 9256] [ 9509] '-'
[12878] [15066] '-'
[16478] [17458] '-'
和另一个cell
数组
C =
[4]
[7]
[1]
[6]
[2]
[5]
[3]
我想将C
中的值替换为B{...,3}
中的值,以便C
成为
C =
'-'
'-'
'+'
'-'
'+'
'-'
'+'
我怎样才能在MATLAB中做到这一点?我目前这样做但是出错了
>> C(C == 'x') = B
Undefined function 'eq' for input arguments of type 'cell'.
答案 0 :(得分:3)
具有[]
单元格数组输出({:}
)的水平串联(comma-separated list)提供了一种直接方法来索引B
中的相应行:
Cnew = B([C{:}],3)
答案 1 :(得分:2)
你可以尝试
C = cellfun(@(x)B(x,3),C);
这解决了C
不再是单元格数组时遇到的问题 - 请注意B{}
和B()
之间的细微差别。
答案 2 :(得分:1)
基本索引,以X
的顺序获取a=[1,3,2,4]
的元素使用X(a)
。指数是矩阵,因此需要进行转换,而不是其他任何转换。
B(cell2mat(c),3)