16074312章安邦四元数
作者: 发布时间:2019-05-07 17:35:55 浏览次数:1251, 编写四元函数程序,实现M8N矩阵乘以N维向量
2, 用彩色照片生成3024*4032的四元素矩阵A,生成4032维四元素向量x=ones(4032,1)+[1:4032]’*i- ones(4032,1)*j+ [4032:-1:1]’*k计算3024维思源书向量b=Ax,并记录cpu运算时间
1.
%A=[A0 A2 A1 A3] denotes a quaternion matrix A=A0+A1*i+A2*j+A3*k
%by zhigang
%On Jan 25,2015
%
[B0,B1,B2,B3]=A2A0123(B);
[C0,C1,C2,C3]=A2A0123(C);
A0=B0*C0-B2*C2-B1*C1-B3*C3;
A2=B0*C2+B2*C0-B1*C3+B3*C1;
A1=B0*C1+B2*C3+B1*C0-B3*C2;
A3=B0*C3-B2*C1+B1*C2+B3*C0;
%
A=[A0 A2 A1 A3];
function [A0,A1,A2,A3]=A2A0123(A)
% input A=[A0 A2 A1 A3]
% output: A0 A1 A2 A3
%by Zhigang Jia
% On Aug 14 2014
n=size(A,2)/4;
A0=A(:,1:n);
A2=A(:,(n+1):(2*n));
A1=A(:,(2*n+1):(3*n));
A3=A(:,(3*n+1):(4*n));
A0=rand(10,10);
>> A1=rand(10,10);
>> A2=rand(10,10);
>> A3=rand(10,10);
>> A=[A0 A2 A1 A3]
A =
1 至 11 列
0.1062 0.4228 0.6665 0.3689 0.1206 0.9827 0.0225 0.6999 0.9686 0.2810 0.4849
0.3724 0.5479 0.1781 0.4607 0.5895 0.7302 0.4253 0.6385 0.5313 0.4401 0.3935
0.1981 0.9427 0.1280 0.9816 0.2262 0.3439 0.3127 0.0336 0.3251 0.5271 0.6714
0.4897 0.4177 0.9991 0.1564 0.3846 0.5841 0.1615 0.0688 0.1056 0.4574 0.7413
0.3395 0.9831 0.1711 0.8555 0.5830 0.1078 0.1788 0.3196 0.6110 0.8754 0.5201
0.9516 0.3015 0.0326 0.6448 0.2518 0.9063 0.4229 0.5309 0.7788 0.5181 0.3477
0.9203 0.7011 0.5612 0.3763 0.2904 0.8797 0.0942 0.6544 0.4235 0.9436 0.1500
0.0527 0.6663 0.8819 0.1909 0.6171 0.8178 0.5985 0.4076 0.0908 0.6377 0.5861
0.7379 0.5391 0.6692 0.4283 0.2653 0.2607 0.4709 0.8200 0.2665 0.9577 0.2621
0.2691 0.6981 0.1904 0.4820 0.8244 0.5944 0.6959 0.7184 0.1537 0.2407 0.0445
12 至 22 列
0.7549 0.0196 0.3968 0.8335 0.4070 0.4952 0.8154 0.2278 0.6260 0.6761 0.7805
0.2428 0.3309 0.8085 0.7689 0.7487 0.1897 0.8790 0.4981 0.6609 0.2891 0.6753
0.4424 0.4243 0.7551 0.1673 0.8256 0.4950 0.9889 0.9009 0.7298 0.6718 0.0067
0.6878 0.2703 0.3774 0.8620 0.7900 0.1476 0.0005 0.5747 0.8908 0.6951 0.6022
0.3592 0.1971 0.2160 0.9899 0.3185 0.0550 0.8654 0.8452 0.9823 0.0680 0.3868
0.7363 0.8217 0.7904 0.5144 0.5341 0.8507 0.6126 0.7386 0.7690 0.2548 0.9160
0.3947 0.4299 0.9493 0.8843 0.0900 0.5606 0.9900 0.5860 0.5814 0.2240 0.0012
0.6834 0.8878 0.3276 0.5880 0.1117 0.9296 0.5277 0.2467 0.9283 0.6678 0.4624
0.7040 0.3912 0.6713 0.1548 0.1363 0.6967 0.4795 0.6664 0.5801 0.8444 0.4243
0.4423 0.7691 0.4386 0.1999 0.6787 0.5828 0.8013 0.0835 0.0170 0.3445 0.4609
23 至 33 列
0.7702 0.6074 0.5762 0.7093 0.4162 0.1192 0.9937 0.7720 0.1209 0.0495 0.5386
0.3225 0.1917 0.6834 0.2362 0.8419 0.9398 0.2187 0.9329 0.8627 0.4896 0.6952
0.7847 0.7384 0.5466 0.1194 0.8329 0.6456 0.1058 0.9727 0.4843 0.1925 0.4991
0.4714 0.2428 0.4257 0.6073 0.2564 0.4795 0.1097 0.1920 0.8449 0.1231 0.5358
0.0358 0.9174 0.6444 0.4501 0.6135 0.6393 0.0636 0.1389 0.2094 0.2055 0.4452
0.1759 0.2691 0.6476 0.4587 0.5822 0.5447 0.4046 0.6963 0.5523 0.1465 0.1239
0.7218 0.7655 0.6790 0.6619 0.5407 0.6473 0.4484 0.0938 0.6299 0.1891 0.4904
0.4735 0.1887 0.6358 0.7703 0.8699 0.5439 0.3658 0.5254 0.0320 0.0427 0.8530
0.1527 0.2875 0.9452 0.3502 0.2648 0.7210 0.7635 0.5303 0.6147 0.6352 0.8739
0.3411 0.0911 0.2089 0.6620 0.3181 0.5225 0.6279 0.8611 0.3624 0.2819 0.2703
34 至 40 列
0.2085 0.6210 0.8589 0.3329 0.1771 0.4145 0.1757
0.5650 0.5737 0.7856 0.4671 0.6628 0.4648 0.2089
0.6403 0.0521 0.5134 0.6482 0.3308 0.7640 0.9052
0.4170 0.9312 0.1776 0.0252 0.8985 0.8182 0.6754
0.2060 0.7287 0.3986 0.8422 0.1182 0.1002 0.4685
0.9479 0.7378 0.1339 0.5590 0.9884 0.1781 0.9121
0.0821 0.0634 0.0309 0.8541 0.5400 0.3596 0.1040
0.1057 0.8604 0.9391 0.3479 0.7069 0.0567 0.7455
0.1420 0.9344 0.3013 0.4460 0.9995 0.5219 0.7363
0.1665 0.9844 0.2955 0.0542 0.2878 0.3358 0.5619
>> B0=rand[10,1];
B0=rand[10,1];
↑
错误: 圆括号或方括号不对称或异常。
>> B0=rand(10,1);
>> B1=rand(10,1);
>> B2=rand(10,1);
>> B3=rand(10,1);
>> B=[B0 B2 B1 B3]
B =
0.1842 0.0620 0.0133 0.5338
0.5972 0.2982 0.8972 0.1092
0.2999 0.0464 0.1967 0.8258
0.1341 0.5054 0.0934 0.3381
0.2126 0.7614 0.3074 0.2940
0.8949 0.6311 0.4561 0.7463
0.0715 0.0899 0.1017 0.0103
0.2425 0.0809 0.9954 0.0484
0.0538 0.7772 0.3321 0.6679
0.4417 0.9051 0.2973 0.6035
>> C=timesQ(A,B)
C =
-4.3704 1.8186 4.1711 4.4379
-5.8416 4.4415 3.9706 3.7765
-5.2004 3.2831 3.3351 2.4833
-5.4963 3.7633 2.8733 3.0340
-4.3399 4.1309 3.8971 2.4240
-5.0674 4.6104 4.0127 3.5057
-2.9813 2.8890 4.9191 3.1224
-4.3645 3.3972 3.9605 4.1237
-4.8239 3.7853 2.8847 4.6939
-3.0044 2.6623 3.3935 2.9537
2
t0=cputime;
I=imread('1.jpg');%½«²Êͼת»»Îª¾ØÕó
A1=double(I(:,:,1));
A2=double(I(:,:,2));
A3=double(I(:,:,3));
A0=zeros(3024,4032);
q0=ones(4032,1);
q1=(1:4032)';
q2=-1*ones(4032,1);
q3=(4032:-1:1)';
A=[A0,A2,A1,A3];
Q=[q0,q2,q1,q3];
C=timesQ(A,Q);
t2=cputime-t0;
答案
T0=59.2302
T2=2.2464
1, 编写四元函数程序,实现M8N矩阵乘以N维向量
2, 用彩色照片生成3024*4032的四元素矩阵A,生成4032维四元素向量x=ones(4032,1)+[1:4032]’*i- ones(4032,1)*j+ [4032:-1:1]’*k计算3024维思源书向量b=Ax,并记录cpu运算时间
1.
%A=[A0 A2 A1 A3] denotes a quaternion matrix A=A0+A1*i+A2*j+A3*k
%by zhigang
%On Jan 25,2015
%
[B0,B1,B2,B3]=A2A0123(B);
[C0,C1,C2,C3]=A2A0123(C);
A0=B0*C0-B2*C2-B1*C1-B3*C3;
A2=B0*C2+B2*C0-B1*C3+B3*C1;
A1=B0*C1+B2*C3+B1*C0-B3*C2;
A3=B0*C3-B2*C1+B1*C2+B3*C0;
%
A=[A0 A2 A1 A3];
function [A0,A1,A2,A3]=A2A0123(A)
% input A=[A0 A2 A1 A3]
% output: A0 A1 A2 A3
%by Zhigang Jia
% On Aug 14 2014
n=size(A,2)/4;
A0=A(:,1:n);
A2=A(:,(n+1):(2*n));
A1=A(:,(2*n+1):(3*n));
A3=A(:,(3*n+1):(4*n));
A0=rand(10,10);
>> A1=rand(10,10);
>> A2=rand(10,10);
>> A3=rand(10,10);
>> A=[A0 A2 A1 A3]
A =
1 至 11 列
0.1062 0.4228 0.6665 0.3689 0.1206 0.9827 0.0225 0.6999 0.9686 0.2810 0.4849
0.3724 0.5479 0.1781 0.4607 0.5895 0.7302 0.4253 0.6385 0.5313 0.4401 0.3935
0.1981 0.9427 0.1280 0.9816 0.2262 0.3439 0.3127 0.0336 0.3251 0.5271 0.6714
0.4897 0.4177 0.9991 0.1564 0.3846 0.5841 0.1615 0.0688 0.1056 0.4574 0.7413
0.3395 0.9831 0.1711 0.8555 0.5830 0.1078 0.1788 0.3196 0.6110 0.8754 0.5201
0.9516 0.3015 0.0326 0.6448 0.2518 0.9063 0.4229 0.5309 0.7788 0.5181 0.3477
0.9203 0.7011 0.5612 0.3763 0.2904 0.8797 0.0942 0.6544 0.4235 0.9436 0.1500
0.0527 0.6663 0.8819 0.1909 0.6171 0.8178 0.5985 0.4076 0.0908 0.6377 0.5861
0.7379 0.5391 0.6692 0.4283 0.2653 0.2607 0.4709 0.8200 0.2665 0.9577 0.2621
0.2691 0.6981 0.1904 0.4820 0.8244 0.5944 0.6959 0.7184 0.1537 0.2407 0.0445
12 至 22 列
0.7549 0.0196 0.3968 0.8335 0.4070 0.4952 0.8154 0.2278 0.6260 0.6761 0.7805
0.2428 0.3309 0.8085 0.7689 0.7487 0.1897 0.8790 0.4981 0.6609 0.2891 0.6753
0.4424 0.4243 0.7551 0.1673 0.8256 0.4950 0.9889 0.9009 0.7298 0.6718 0.0067
0.6878 0.2703 0.3774 0.8620 0.7900 0.1476 0.0005 0.5747 0.8908 0.6951 0.6022
0.3592 0.1971 0.2160 0.9899 0.3185 0.0550 0.8654 0.8452 0.9823 0.0680 0.3868
0.7363 0.8217 0.7904 0.5144 0.5341 0.8507 0.6126 0.7386 0.7690 0.2548 0.9160
0.3947 0.4299 0.9493 0.8843 0.0900 0.5606 0.9900 0.5860 0.5814 0.2240 0.0012
0.6834 0.8878 0.3276 0.5880 0.1117 0.9296 0.5277 0.2467 0.9283 0.6678 0.4624
0.7040 0.3912 0.6713 0.1548 0.1363 0.6967 0.4795 0.6664 0.5801 0.8444 0.4243
0.4423 0.7691 0.4386 0.1999 0.6787 0.5828 0.8013 0.0835 0.0170 0.3445 0.4609
23 至 33 列
0.7702 0.6074 0.5762 0.7093 0.4162 0.1192 0.9937 0.7720 0.1209 0.0495 0.5386
0.3225 0.1917 0.6834 0.2362 0.8419 0.9398 0.2187 0.9329 0.8627 0.4896 0.6952
0.7847 0.7384 0.5466 0.1194 0.8329 0.6456 0.1058 0.9727 0.4843 0.1925 0.4991
0.4714 0.2428 0.4257 0.6073 0.2564 0.4795 0.1097 0.1920 0.8449 0.1231 0.5358
0.0358 0.9174 0.6444 0.4501 0.6135 0.6393 0.0636 0.1389 0.2094 0.2055 0.4452
0.1759 0.2691 0.6476 0.4587 0.5822 0.5447 0.4046 0.6963 0.5523 0.1465 0.1239
0.7218 0.7655 0.6790 0.6619 0.5407 0.6473 0.4484 0.0938 0.6299 0.1891 0.4904
0.4735 0.1887 0.6358 0.7703 0.8699 0.5439 0.3658 0.5254 0.0320 0.0427 0.8530
0.1527 0.2875 0.9452 0.3502 0.2648 0.7210 0.7635 0.5303 0.6147 0.6352 0.8739
0.3411 0.0911 0.2089 0.6620 0.3181 0.5225 0.6279 0.8611 0.3624 0.2819 0.2703
34 至 40 列
0.2085 0.6210 0.8589 0.3329 0.1771 0.4145 0.1757
0.5650 0.5737 0.7856 0.4671 0.6628 0.4648 0.2089
0.6403 0.0521 0.5134 0.6482 0.3308 0.7640 0.9052
0.4170 0.9312 0.1776 0.0252 0.8985 0.8182 0.6754
0.2060 0.7287 0.3986 0.8422 0.1182 0.1002 0.4685
0.9479 0.7378 0.1339 0.5590 0.9884 0.1781 0.9121
0.0821 0.0634 0.0309 0.8541 0.5400 0.3596 0.1040
0.1057 0.8604 0.9391 0.3479 0.7069 0.0567 0.7455
0.1420 0.9344 0.3013 0.4460 0.9995 0.5219 0.7363
0.1665 0.9844 0.2955 0.0542 0.2878 0.3358 0.5619
>> B0=rand[10,1];
B0=rand[10,1];
↑
错误: 圆括号或方括号不对称或异常。
>> B0=rand(10,1);
>> B1=rand(10,1);
>> B2=rand(10,1);
>> B3=rand(10,1);
>> B=[B0 B2 B1 B3]
B =
0.1842 0.0620 0.0133 0.5338
0.5972 0.2982 0.8972 0.1092
0.2999 0.0464 0.1967 0.8258
0.1341 0.5054 0.0934 0.3381
0.2126 0.7614 0.3074 0.2940
0.8949 0.6311 0.4561 0.7463
0.0715 0.0899 0.1017 0.0103
0.2425 0.0809 0.9954 0.0484
0.0538 0.7772 0.3321 0.6679
0.4417 0.9051 0.2973 0.6035
>> C=timesQ(A,B)
C =
-4.3704 1.8186 4.1711 4.4379
-5.8416 4.4415 3.9706 3.7765
-5.2004 3.2831 3.3351 2.4833
-5.4963 3.7633 2.8733 3.0340
-4.3399 4.1309 3.8971 2.4240
-5.0674 4.6104 4.0127 3.5057
-2.9813 2.8890 4.9191 3.1224
-4.3645 3.3972 3.9605 4.1237
-4.8239 3.7853 2.8847 4.6939
-3.0044 2.6623 3.3935 2.9537
2
t0=cputime;
I=imread('1.jpg');%½«²Êͼת»»Îª¾ØÕó
A1=double(I(:,:,1));
A2=double(I(:,:,2));
A3=double(I(:,:,3));
A0=zeros(3024,4032);
q0=ones(4032,1);
q1=(1:4032)';
q2=-1*ones(4032,1);
q3=(4032:-1:1)';
A=[A0,A2,A1,A3];
Q=[q0,q2,q1,q3];
C=timesQ(A,Q);
t2=cputime-t0;
答案
T0=59.2302
T2=2.2464