You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现125*125二维矩阵顺时针旋转10度的方案咨询

125*125矩阵顺时针10度旋转及适配交替读取方案

旋转实现(保留全原始信息)

小角度旋转要避免数据丢失,需要先扩容基底再做变换,具体流程:

  • 先创建尺寸为132132的全0矩阵作为旋转基底,将原125125矩阵放在基底中心位置,确保旋转后边缘的原始数据不会被裁剪
  • 代入顺时针旋转10度的坐标变换公式计算每个原数据点的新位置:
    θ = 10 * π / 180  # 角度转弧度
    新坐标x' = x * cosθ + y * sinθ
    新坐标y' = -x * sinθ + y * cosθ
    
  • 插值算法选双线性插值即可,兼顾图案精度和计算效率,旋转完成后得到的矩阵包含所有原始数据的旋转特征。

适配仿真软件交替读取规则

仿真软件的逐行交替读取逻辑,只需要在导出数据前对矩阵做行顺序预处理:

  • 行号从0开始计数,遍历所有行
  • 奇数行(对应实际读取顺序的第2、4、6…行,行号为1、3、5…)做整行元素倒序处理
  • 偶数行保持原有顺序不变
  • 预处理完成后的矩阵直接导入仿真软件,绘制出的图像就是原始数据顺时针旋转10度的效果,和原图对比可直观判断为同一数据的不同旋转形态。

Python实现参考代码

import numpy as np
import cv2

# 替换为你的实际125*125矩阵数据
raw_arr = np.loadtxt("your_raw_data.txt")  

# 第一步:顺时针旋转10度,保留全量数据不裁剪
h, w = raw_arr.shape
center = (w//2, h//2)
# OpenCV中负角度代表顺时针旋转,计算旋转矩阵
rot_mat = cv2.getRotationMatrix2D(center, -10, 1)
cos = np.abs(rot_mat[0, 0])
sin = np.abs(rot_mat[0, 1])
# 计算旋转后外接矩形尺寸,避免裁剪
new_w = int((h * sin) + (w * cos))
new_h = int((h * cos) + (w * sin))
rot_mat[0, 2] += (new_w / 2) - center[0]
rot_mat[1, 2] += (new_h / 2) - center[1]
rotated_arr = cv2.warpAffine(raw_arr, rot_mat, (new_w, new_h), flags=cv2.INTER_LINEAR, borderValue=0)

# 第二步:适配交替行读取规则
for row_idx in range(rotated_arr.shape[0]):
    if row_idx % 2 == 1:
        rotated_arr[row_idx] = rotated_arr[row_idx][::-1]

# 导出处理完成的矩阵
np.savetxt("rotated_adapted_data.txt", rotated_arr)

内容的提问来源于stack exchange,提问作者Skylimit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 10:24:02