我有两个单元格数组如下
Z= (2,5) (2,3) (2,1) (2,2) (2,4)
(4,5) (4,3) (4,1) (4,2) (4,4)
(5,5) (5,3) (5,1) (5,2) (5,4)
(3,5) (3,3) (3,1) (3,2) (3,4)
(1,5) (1,3) (1,1) (1,2) (1,4)
W= 'ATGC' 'ACTG' 'AGCT' 'AATT' 'TATG'
'GCTA' 'GACT' 'TACG' 'TGAT' 'ATAT'
'TCGG' 'CATA' 'TAAT' 'TTTT' 'CTGC'
'AAGT' 'AAGG' 'TGGG' 'TGTA' 'CAAA'
'GTGG' 'CTCT' 'GATT' 'CGTG' 'CTGG'
现在我有一个大问题......我需要创建一个新的单元阵列' G'其中W的值应该与Z中给出的位置相对应。
例如:W中的(2,5)处的值; ATAT应位于G的(1,1)处 两个单元阵列都只是示例......我需要为256 * 256阵列做这个。请帮忙。谢谢提前
答案 0 :(得分:4)
如果我们假设示例为:
Z = {[2,5] [2,3] [2,1] [2,2] [2,4]...
[4,5] [4,3] [4,1] [4,2] [4,4]...
[5,5] [5,3] [5,1] [5,2] [5,4]...
[3,5] [3,3] [3,1] [3,2] [3,4]...
[1,5] [1,3] [1,1] [1,2] [1,4]}
W = {'ATGC' 'ACTG' 'AGCT' 'AATT' 'TATG';...
'GCTA' 'GACT' 'TACG' 'TGAT' 'ATAT';...
'TCGG' 'CATA' 'TAAT' 'TTTT' 'CTGC';...
'AAGT' 'AAGG' 'TGGG' 'TGTA' 'CAAA';...
'GTGG' 'CTCT' 'GATT' 'CGTG' 'CTGG'}
然后我们得到了:
G = cell(5,5)
I = [Z{:}]; %indices in a vector
x = I(2:2:end); y = I(1:2:end);
I = sub2ind(size(Z),y,x);
G(I) = W(1:numel(W));
答案 1 :(得分:2)
使用索引技术 -
G = cell(size(W)) %// Create a empty cell array for storage of desired output
row_col = vertcat(Z{:}) %// Extract row and col indices from Z into numeric array
G(sub2ind(size(W),row_col(:,1),row_col(:,2))) = W %// Index G with row_col ...
%// and set values from W