设CCD_ 1,其包含二进制位(nXn
矩阵(
A=[ 1 0 1 0 1 0 ; 0 1 1 0 1 1;1 1 0 1 1 0; 0 0 1 0 0 1;0 1 1 0 1 1;0 1 0 1 1 1];
设B
是A
的3x3
子矩阵
B = [1 0 1;0 1 1;1 1 0];
现在,我想要选择比特1 0 1 1 0
,即,需要选择存在于位置(1,1) (1,2) (2,2) (3,2) (3,3)
中的比特。
接下来,我需要遍历主矩阵A
中的这个模式。
因此,对于上述模式,所选择的总比特将是20
,而剩余位置比特将是A = 6x6 matrix
0。
我想在一个数组中存储按模式选择的值,并在另一个数组存储其余位置值的值。
模式选择值,
`p1=[1 0 1 1 0 0 1 1 1 0 0 0 1 1 0 0 0 1 1 1];`
剩余位置值
p2=[1 0 1 1 0 0 1 1 1 0 1 0 1 0 1 1];
如果将该代码推广到CCD_ 11主矩阵,将更有帮助。我已将图案和程序作为图片附上。
有人能帮我吗?【程序】1【图案】2
我想这就是你想要的。它给出的答案与你至少得到的答案相同。它应该适用于任何大小的矩阵A。它假设模式总是3x3,但这很容易推广。
A = [1 0 1 0 1 0;0 1 1 0 1 1;1 1 0 1 1 0;0 0 1 0 0 1;0 1 1 0 1 1;0 1 0 1 1 1];
pattern = logical([1 1 0;0 1 0;0 1 1]);
% Split A into 3x3 sub matrices
subs = mat2cell(A, [3,3], [3,3])';
s = size(subs);
p1=[];
p2=[];
for i = 1 : s(1)*s(2)
sub = subs{i};
p1 = [p1 sub'(pattern')'];
p2 = [p2 sub'(~pattern')'];
end
p1
p2