- 积分
- 0
- 注册时间
- 2010-2-23
- 仿真币
-
- 最后登录
- 1970-1-1
|
本帖最后由 武神裝攻 于 2010-12-13 09:16 编辑
不好意思 小弟在矩阵上又遇上了一个有趣的问题
想问板上各位英雄们帮实现程序 在此先感激各位并谢谢
以下是单一页案例
小弟三有个矩阵A、B、C,希望求D
A = [2 6 4 8; % 1
5 7 8 2; % 2
1 5 6 4]; % 3
B = [4 8 7 4; % 1
7 8 2 6; % 2
3 2 5 5]; % 3
C = [8 4 1 1; % 1
6 9 5 4; % 2
7 7 8 9]; % 3
A、B、C都是3*4大矩阵,所以合并的D是(3*3)*(3*4)=9*12大的矩阵
A B C
D = A [ A 0 0
B 0 B 0
C 0 0 C
所以D最后会得到的答案是
D= [2 0 0 6 0 0 4 0 0 8 0 0; % 1
0 4 0 0 8 0 0 7 0 0 4 0; % 1
0 0 8 0 0 4 0 0 1 0 0 1; % 1
5 0 0 7 0 0 8 0 0 2 0 0; % 2
0 7 0 0 8 0 0 2 0 0 6 0; % 2
0 0 6 0 0 9 0 0 5 0 0 4; % 2
1 0 0 5 0 0 6 0 0 4 0 0; % 3
0 3 0 0 2 0 0 5 0 0 5 0; % 3
0 0 7 0 0 7 0 0 8 0 0 9]; % 3
程序:
clear all
A = [2 6 4 8; % 1
5 7 8 2; % 2
1 5 6 4]; % 3
B = [4 8 7 4; % 1
7 8 2 6; % 2
3 2 5 5]; % 3
C = [8 4 1 1; % 1
6 9 5 4; % 2
7 7 8 9]; % 3
T_A=kron(A,[1;0;0]);
T_B=kron(B,[1;0;0]);
T_B=circshift(T_B,1);
T_C=kron(C,[1;0;0]);
T_C=circshift(T_C,2);
D=reshape([T_A;T_B;T_C],size(T_A,1),[])
现在假设 ABC有分页 例
A(:,:,1) = [2 6 4 8; % 1
5 7 8 2; % 2
1 5 6 4]; % 3
A(:,:,2) = [4 8 7 4; % 1
5 7 8 2; % 2
1 5 6 4]; % 3
A(:,:,3) = [8 4 1 1; % 1
5 7 8 2; % 2
1 5 6 4]; % 3
B(:,:,1) = [4 8 7 4; % 1
7 8 2 6; % 2
3 2 5 5]; % 3
B(:,:,2) = [2 6 4 8; % 1
7 8 2 6; % 2
3 2 5 5]; % 3
B(:,:,3) = [8 4 1 1; % 1
7 8 2 6; % 2
3 2 5 5]; % 3
C(:,:,1) = [8 4 1 1; % 1
6 9 5 4; % 2
7 7 8 9]; % 3
C(:,:,2) = [2 6 4 8; % 1
6 9 5 4; % 2
7 7 8 9]; % 3
C(:,:,3) = [4 8 7 4; % 1
6 9 5 4; % 2
7 7 8 9]; % 3
请问要如何更改求D=
D(:,:,1)= [2 0 0 6 0 0 4 0 0 8 0 0;
0 4 0 0 8 0 0 7 0 0 4 0;
0 0 8 0 0 4 0 0 1 0 0 1;
5 0 0 7 0 0 8 0 0 2 0 0;
0 7 0 0 8 0 0 2 0 0 6 0;
0 0 6 0 0 9 0 0 5 0 0 4;
1 0 0 5 0 0 6 0 0 4 0 0;
0 3 0 0 2 0 0 5 0 0 5 0;
0 0 7 0 0 7 0 0 8 0 0 9];
D(:,:,2)= [ 4 0 0 8 0 0 7 0 0 4 0 0;
0 2 0 0 6 0 0 4 0 0 8 0;
0 0 2 0 0 6 0 0 4 0 0 8;
5 0 0 7 0 0 8 0 0 2 0 0;
0 7 0 0 8 0 0 2 0 0 6 0;
0 0 6 0 0 9 0 0 5 0 0 4;
1 0 0 5 0 0 6 0 0 4 0 0;
0 3 0 0 2 0 0 5 0 0 5 0;
0 0 7 0 0 7 0 0 8 0 0 9];
D(:,:,3)= [8 0 0 4 0 0 1 0 0 1 0 0;
0 8 0 0 4 0 0 1 0 0 1 0;
0 0 4 0 0 8 0 0 7 0 0 4;
5 0 0 7 0 0 8 0 0 2 0 0;
0 7 0 0 8 0 0 2 0 0 6 0;
0 0 6 0 0 9 0 0 5 0 0 4;
1 0 0 5 0 0 6 0 0 4 0 0;
0 3 0 0 2 0 0 5 0 0 5 0;
0 0 7 0 0 7 0 0 8 0 0 9];
刚想到不好意思 谢谢
for b = 1:3
T_A(:,:,b) = kron(A(:,:,b),[1;0;0]);
T_B(:,:,b) = kron(B(:,:,b),[1;0;0]);
T_C(:,:,b) = kron(C(:,:,b),[1;0;0]);
T_D(:,:,b) = circshift(T_B(:,:,b),1);
T_E(:,:,b) = circshift(T_C(:,:,b),2);
D(:,:,b) = reshape([T_A(:,:,b);T_D(:,:,b);T_E(:,:,b)],size(T_A,1),[]);
end |
评分
-
1
查看全部评分
-
|