ValueError: setting an array element with a sequence.

ValueError: setting an array element with a sequence.

运行时一直出现这个ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 2 dimensions. The detected shape was (3, 1) + inhomogeneous part.,该如何解决(备注掉最后一行时,又不报错了)

import numpy as np
import matplotlib.pyplot as plt

# 显示中文和负号
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 已知的是目标的静态RCS
# (x_0,y_0)为飞机航迹的圆心坐标,V为飞机目标的巡航速度,r为航迹半径,h为巡航高度
x_0 = 0
y_0 = 0
v = 300               #单位为 m/s
h = 0                 #单位为 m
r = 300                 #单位为 m
# a 表示偏航角,b 表示仰俯角 ,c 表示滚转角
a = 0
b = 0
c = 0
# 目标飞行一周所需时间
t_all = 2 * np.pi * r / v   #单位为 s
# t为需要计算的时刻
# 返回的雷达(原点)在机体变换到坐标系中的坐标轴,和雷达到目标的距离
def angle(t):
    # x_T,y_T,z_T 为飞机目标在雷达坐标系中的位置
    x_T = x_0 + r * np.cos(v * t / r)
    y_T = y_0 + r * np.sin(v * t / r)
    z_T = h
    # r_t 为目标到目标的实时距离
    r_t = np.sqrt(np.power(x_T,2) + np.power(y_T,2) + np.power(z_T,2))
    axis_T = np.array([[-x_T],
                       [-y_T],
                       [-z_T]])
    # a 表示偏航角,b 表示仰俯角 ,c 表示滚转角
    a = v * t / r    #假设偏航角是与y轴的夹角,其就等于转动过的角度
    # 滚转角 转换矩阵
    c_t = np.array([[1,0,0],
                    [0, np.cos(c),np.sin(c)],
                    [0,-np.sin(c),np.cos(c)]])
    # 俯仰角 转换矩阵
    b_t = np.array([[np.cos(b), 0, -np.sin(b)],
                    [0, 1, 0],
                    [np.sin(b), 0, np.cos(b)]])
    # 偏航角 转换矩阵
    a_t = np.array([[np.cos(a), np.sin(a), 0],
                    [-np.sin(a), np.cos(a), 0],
                    [0, 0, 1]])
    # axis_t #转换到机体坐标系后的雷达的坐标
    axis_t = np.dot(np.dot(np.dot(c_t, b_t), a_t), axis_T)
    x_t = axis_t[0,0]
    y_t = axis_t[1,0]
    z_t = axis_t[2,0]
    # 计算时变得姿态角
    fangwei = np.arctan(y_t / x_t)                        #np.arctan()输入正切值,输出对应弧度
    fuyang = np.arctan(z_t / np.sqrt(np.power(x_t,2)+np.power(y_t,2)+np.power(z_t,2)))
    # 将弧度转换为角度
    fangwei_t = fangwei * (180 / np.pi)
    fuyang_t = fuyang * (180 / np.pi)
    return fangwei_t,fuyang_t,r_t

# 绘制方位角变化曲线
x = np.arange(0,t_all,5)
fangweijiao,fuyangjiao,juli = angle(x)


在你的代码中,我注意到在函数angle()的最后一行有三个变量被返回,而不是一个数组。如果你想把这三个变量作为一个数组返回,你可以使用numpy.stack()函数来把它们沿着一个新的维度堆叠在一起。修改最后一行代码为:

return np.stack((fangweijiao, fuyangjiao, juli), axis=1)
这将把fangweijiao、fuyangjiao和juli这三个变量沿着新的维度(axis=1)堆叠成一个数组,并返回该数组。