大家好,欢迎来到IT知识分享网。
以



本文利用哈达玛(Hadamand)矩阵直积法原理和VBA的Array函数、For…Next语句、If…Then…Else 语句,给出了VBA代码,并利用该代码可以构造


一、数学方法[1]
设A,B 分别为



例如,
最简单的哈达玛(Hadamand)矩阵为

从


二、VBA实现方法
打开Excel,点击“开发工具”→点击“宏”→填写宏名,例如宏名为“zjf”→点击“创建”→在代码编辑框内输入代码→在“A1”单元格填写二水平正交表的阶数→运行名为“zjf”的宏。
三、VBA代码
Worksheets(“H2矩阵”).Select
Dim i, j, k As Integer
Dim Array1() As Variant
Dim Array2() As Variant
Dim Array3() As Variant
n=Log([A1])/Log(2)
ReDim Array1(2^n,2^n)
Array1(1,1) =1
Array1(1,2) =1
Array1(2,1) =1
Array1(2,2) = -1
ReDim Array2(2 ^n,2^n)
For i = 1 To 2
For j=1 To 2
Array2(i,j) = Array1(i,j)
Array2(i,j)=Array1(i,j)
Next j
Next i
For k=1 To n
For i =1 To 2^(k -1)
For j =1 To 2^(k -1)
Array2(i,j +2^(k -1))=Array2(i,j)
Array2(i+2^(k -1),j)= Array2(i,j)
Array2(i+2^(k-1),j +2^(k-1))= Array2(i,j)*(-1)
Next j
Next i
Next k
ReDim Array3(2^n,(2^n) -1)
For i =1 To 2^n ‘数组Array2去掉第一列
For j =1 To 2^n-1
Array3(i, j) = Array2(i,j +1)
If Array3(i,j) = -1 Then
Array3(i,j) =2
End If
Next j
Next i
For i = 1 To 2^n
For j =1 To 2^n-1
Cells(i+1,j) = Array3(i,j)
Next j
Next i
参考文献:
[1]杨子胥,正交表的构造,山东,人民出版社,1978年8月,74-77
[2] 李学斌等,运用Excel进行正交表的构造,河南科技学院学报(自然科学版)第36卷第4期,2008年12月,111
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/172636.html