Kg=3.2e10; k=2.5*10e-11; alpha=1.35; beta=0.385; a=2.65e-5; Eta=0.00105; Pg=2690; Kw=2.395e9; Pw=1023; cw=1500; f=10:10:100000; w=2*pi*f; EP=a*sqrt((w*Pw)/Eta); T=zeros(size(EP)); %设置零矩阵,1*100; % idx与EP具有相同的长度,如果Zeta(j)<=1e3,则idx(j)=1;反之,idx(k)=0; T=((-sqrt(1i)).*besselj(1,EP.*sqrt(1i)))./(besselj(0,EP.*sqrt(1i))); F=((EP./4).*T./((1-((2i./EP).*T)))); P=beta*Pw+(1-beta)*Pg; Keff=(((1-beta)/Kg)+(beta/Kw))^-1; Pbl=((alpha*Pw)/beta)+((1i.*F*Eta)./(k.*w)); Peff=(P.*Pbl-Pw^2)./(Pbl+P-2*Pw); F=((EP/4).*T./((1-((2*1i./EP).*T)))); P=beta*Pw+(1-beta)*Pg; cp=sqrt(Keff./Peff); kp=w./cp; k1p= real(kp); k2p=imag(kp); Rp=k2p./k1p; vp=cp/cw; alphap=(40*pi.*f.*Rp)./(vp*cw*log(10)); figure(1); semilogx(f,alphap) title('衰减系数') xlabel('频率/Hz') ylabel('衰减系数dB/m') figure(2); semilogx(f,vp) title('声速比') xlabel('频率/Hz') figure(3); semilogx(f,cp) title('声速') xlabel('频率/Hz') ylabel('速度m/s') figure(4); semilogx(f,Rp) title('能量损失参数') xlabel('频率/Hz') ylabel('衰减系数dB/m')
时间: 2023-03-20 19:01:08 浏览: 206
null 是一个计算机编程术语,用来表示一个空或无效的值。在程序中,null通常用于表示一个变量或对象没有被赋值或不存在。null可以作为一种特殊的值被分配给变量或对象,表示它们不指向任何有效的内存地址或数据。
相关问题
function f=leader(t,e) f(1)=-10*e(1)+2*e(1)-0.1*e(2)-0.2*e(1)+0.1*e(3)+0.1*e(5)+0.3*e(7)-0.3*e(9); f(2)=-10*e(2)-3*e(1)+1.5*e(2)-0.2*e(2)+0.1*e(4)+0.1*e(6)+0.3*e(8)-0.3*e(10); f(3)=-10*e(3)+2*e(3)-0.1*e(4)+0.4*e(1)-0.5*e(3)+0.1*e(5)-0.2*e(7)+0.2*e(9); f(4)=-10*e(4)-3*e(3)+1.5*e(4)+0.4*e(2)-0.5*e(4)+0.1*e(6)-0.2*e(8)+0.2*e(10); f(5)=-10*e(5)+2*e(5)-0.1*e(6)+0.3*e(1)-0.1*e(3)-0.2*e(5)+0.1*e(7)-0.1*e(9); f(6)=-10*e(6)-3*e(5)+1.5*e(6)+0.3*e(2)-0.1*e(4)-0.2*e(6)+0.1*e(8)-0.1*e(10); f(7)=-10*e(7)+2*e(7)-0.1*e(8)+0.2*e(1)-0.4*e(3)+0.2*e(5)-0.2*e(7)+0.2*e(9); f(8)=-10*e(8)-3*e(7)+4.5*e(8)+0.2*e(2)-0.4*e(4)+0.2*e(6)-0.2*e(8)+0.2*e(10); f(9)=-10*e(9)+2*e(9)-0.1*e(10)+0.3*e(1)-0.2*e(3)-0.1*e(5)+0.1*e(7)-0.1*e(9); f(10)=-10*e(10)-3*e(9)+4.5*e(10)+0.3*e(2)-0.2*e(4)-0.1*e(6)+0.1*e(8)-0.1*e(10); end
这段代码是一个函数,输入参数为时间 t 和当前系统状态 e,输出为系统的状态方程值 f。根据代码可以看出,这是一个 10 维的系统,即系统状态有 10 个变量(e1, e2, ..., e10),每个变量都有对应的状态方程。在函数中,对每个状态变量都计算了其状态方程值,并将这些值存入 f 向量中返回,以便在调用该函数时使用。
Matlab% 太阳系模拟 G = 6.67430e-11; % 万有引力常数 M_sun = 1.989e30; % 太阳质量 M_mercury = 3.3e23; % 水星质量 M_venus = 4.87e24; % 金星质量 M_earth = 5.97e24; % 地球质量 M_mars = 6.39e23; % 火星质量 M_jupiter = 1.898e27; % 木星质量 M_saturn = 5.68e26; % 土星质量 M_uranus = 8.68e25; % 天王星质量 M_neptune = 1.02e26; % 海王星质量 M_pluto = 1.31e22; % 冥王星质量 % 初始位置和速度 P_sun = [0; 0; 0]; P_mercury = [0; 5.7e10; 0]; P_venus = [0; 1.1e11; 0]; P_earth = [0; 1.5e11; 0]; P_mars = [0; 2.2e11; 0]; P_jupiter = [0; 7.8e11; 0]; P_saturn = [0; 1.4e12; 0]; P_uranus = [0; 2.9e12; 0]; P_neptune = [0; 4.5e12; 0]; P_pluto = [0; 5.9e12; 0]; V_sun = [0; 0; 0]; V_mercury = [4.8e4; 0; 0]; V_venus = [3.5e4; 0; 0]; V_earth = [2.98e4; 0; 0]; V_mars = [2.41e4; 0; 0]; V_jupiter = [1.3e4; 0; 0]; V_saturn = [9.7e3; 0; 0]; V_uranus = [6.8e3; 0; 0]; V_neptune = [5.4e3; 0; 0]; V_pluto = [4.7e3; 0; 0]; % 模拟时间和时间步长 t = 0:3600*24*365:3600*24*365*10; dt = 3600*24; % 数值积分 P = [P_sun, P_mercury, P_venus, P_earth, P_mars, P_jupiter, P_saturn, P_uranus, P_neptune, P_pluto]; V = [V_sun, V_mercury, V_venus, V_earth, V_mars, V_jupiter, V_saturn, V_uranus, V_neptune, V_pluto]; M = [M_sun, M_mercury, M_venus, M_earth, M_mars, M_jupiter, M_saturn, M_uranus, M_neptune, M_pluto]; for i = 1:length(t)-1 F = zeros(3, size(P, 2)); for j = 1:size(P, 2) for k = 1:size(P, 2) if j ~= k r = norm(P(:,j)-P(:,k)); F(:,j) = F(:,j) + G*M(j)*M(k)/r^2*(P(:,k)-P(:,j))/r; end end end A = F./M; V = V + A*dt; P = P + V*dt; end % 绘制行星轨道 figure; hold on; plot3(P(1,:), P(2,:), P(3,:), 'k'); grid on; axis equal; view(45, 45); 代码报错 错误使用:./ 2.矩阵维度必须一致
这个错误通常是由于矩阵的维度不匹配导致的。在这个代码中,错误可能出现在以下几行:
```
F = zeros(3, size(P, 2));
...
A = F./M;
```
这里的 `size(P, 2)` 表示矩阵 `P` 的第二个维度的大小,也就是行星数量。因此,`F` 的第二个维度大小应该和行星数量相同。而 `M` 是行星质量的向量,它的大小应该和行星数量相同。如果这两个向量的大小不同,那么在进行除法运算时就会出现维度不匹配的错误。
你可以通过在这些语句之前添加 `disp` 语句来检查这些变量的大小:
```
disp(size(P, 2));
disp(size(M));
```
这样就可以找到错误所在,并修复代码。
阅读全文
相关推荐












