matlab 数组范围内,MATLAB索引超出数组范围

在MATLAB程序中遇到循环内的数组初始化问题,具体为在第二次循环时发生索引超出数组范围的错误。代码涉及多个嵌套循环和矩阵运算。作者尝试将变量X的初始化移出内层循环,但因为X依赖于n的值,导致无法直接移出。求助如何正确初始化X,使其仅在n循环开始时执行一次。
摘要由CSDN通过智能技术生成

以下是程序:

clear;

clc;

E=20

L=3.3e-3

C=1e-3

R=19;

T=4e-4;

a = 1/(2*R*C);

w = sqrt(1/L/C-1/4/R^2/C^2);

A2 = [0,-1/L;1/C,-1/R*C];

A1 = A2;

A3=[0,0;0,-1/C*R];

B1=[1/L;0];

B2=[0;0];

B3=B2;

I=[1,0;0,1];

for m=1:5001

Iref=0.1+0.01*(m-1);

i(1)=0;

u(1)=0;

for n=1:5000

X = [ i( n ); u( n ) ];

p1=(exp(-a*T)/w*((a*sin(w*T))+(w*cos(w*T))));

q1=exp(-a*T)/w*sin(w*T);

Ib1=(Iref/p1)+(q1*u(n)/L/p1)-(((1-p1)/R)+(q1/L))*E/q1;

if i(n)<=Ib1

X(:,n+1)=exp(A1*T)*X+(exp(A1*T)-I)*A1^-1*B1*E;

else

syms t1;

p3=exp(A1*t1)*X+(exp(A1*t1)-I)*A1^-1*B1*E;

q3=p3(1,:);

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值