'====================================================
' 程序:3x3矩陣運算測試版
' 功能:實現兩個3x3矩陣的加法、乘法運算并顯示結果
'本程序由deekseep生成~~~~
'====================================================
' 單片機配置文件
$regfile = "m16def.dat" ' 設置晶振頻率為8MHz
$crystal = 8000000 ' 設置串口波特率為9600
$baud = 9600
' 定義3x3矩陣變量(索引從1開始)
Dim MatrixA(3 , 3) As Single ' 矩陣A
Dim MatrixB(3 , 3) As Single ' 矩陣B
Dim MatrixResult(3 , 3) As Single ' 結果矩陣
' 定義循環計數器
Dim I As Byte , J As Byte , K As Byte
' 定義臨時變量用于計算
Dim Temp As Single
Dim Temp1 As Single
Dim Temp2 As Single
' 預設測試矩陣數據
' 矩陣A:1-9的連續數字
MatrixA(1,1) = 1 : MatrixA(1,2) = 2 : MatrixA(1,3) = 3
MatrixA(2,1) = 4 : MatrixA(2,2) = 5 : MatrixA(2,3) = 6
MatrixA(3,1) = 7 : MatrixA(3,2) = 8 : MatrixA(3,3) = 9
' 矩陣B:9-1的遞減數字
MatrixB(1,1) = 9 : MatrixB(1,2) = 8 : MatrixB(1,3) = 7
MatrixB(2,1) = 6 : MatrixB(2,2) = 5 : MatrixB(2,3) = 4
MatrixB(3,1) = 3 : MatrixB(3,2) = 2 : MatrixB(3,3) = 1
' 主程序開始
Main:
' 顯示矩陣A
Print "矩陣A:"
Gosub Print_matrixa '調用打印矩陣A的子程序
wait 2
Print
' 顯示矩陣B
Print "矩陣B:"
Gosub Print_matrixb ''調用打印矩陣B的子程序
wait 2
Print
' 計算并顯示矩陣加法結果
Print "加法結果(A+B):"
Gosub Matrix_add ' 調用矩陣加法運算子程序
Gosub Print_result ' 調用打印結果矩陣的子程序
wait 2
Print
' 計算并顯示矩陣乘法結果
Print "乘法結果(A*B):"
Gosub Matrix_mul ' 調用矩陣乘法運算子程序
Gosub Print_result ' 調用打印結果矩陣的子程序
' 程序結束
End
' 打印矩陣A的子程序
Print_matrixa:
' 外層循環遍歷行
For I = 1 To 3
' 內層循環遍歷列
For J = 1 To 3
' 打印當前元素并加空格
Print MatrixA(i , J) ; " ";
waitms 200
Next J
' 換行到下一行
Print
Next I
Return
' 打印矩陣B的子程序
Print_matrixb:
For I = 1 To 3
For J = 1 To 3
Print MatrixB(i , J) ; " ";
waitms 200
Next J
Print
Next I
Return
' 打印結果矩陣的子程序
Print_result:
For I = 1 To 3
For J = 1 To 3
Print MatrixResult(i , J) ; " "; '打印當前果矩陣元素并加空格
waitms 300
Next J
Print
Next I
Return
' 矩陣加法運算子程序
Matrix_add:
For I = 1 To 3 ' 遍歷行
For J = 1 To 3 ' 遍歷列
' 對應位置元素相加
MatrixResult(i , J) = MatrixA(i , J) + MatrixB(i , J)
Next J
Next I
Return
' 矩陣乘法運算子程序
Matrix_mul:
For I = 1 To 3 ' 遍歷結果矩陣的行
For J = 1 To 3 ' 遍歷結果矩陣的列
Temp = 0 ' 初始化累加器
' 矩陣乘法:A的第i行與B的第j列點乘
For K = 1 To 3 ' 遍歷公共維度
Temp1 = MatrixA(i , K) ' 單步計算:先取矩陣A第i行第K列的值
Temp2 = MatrixB(k , J) ' 再取矩陣B第K行第j列的值
Temp1 = Temp1 * Temp2 ' 然后相乘得到單個乘積
Temp = Temp + Temp1 ' 最后累加到臨時變量
Next K
MatrixResult(i , J) = Temp ' 將計算結果存入結果矩陣
Next J
Next I
Return
'(
程序功能說明:
這是一個用于ATmega16單片機的3x3矩陣運算程序,主要功能包括:
1. 矩陣定義:預定義了兩個3x3測試矩陣(MatrixA和MatrixB)
2. 矩陣顯示:可以打印顯示原始矩陣和計算結果
3. 矩陣加法:實現兩個矩陣的對應元素相加
4. 矩陣乘法:實現標準的矩陣乘法運算
5. 程序通過串口輸出結果,便于調試和驗證矩陣運算的正確性。
')
|