以下是程序:

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,:);

t1=solve(Iref==q3,t1);

t1=double(t1);

p2=(exp(-a*t1)/w*(a*sin(w*t1)+w*cos(w*t1)));

q2=exp(-a*t1)/w*sin(w*t1);

Ib2 = Iref/p2+q2*u(n)/L/p2-((1-p2)/R+q2/L)*E/p2;

if i(n) < Ib2

t2=T-t1;

X(:,n+1)=exp(A2*t2)*exp(A1*t1)*X+exp(A2*t2).*(exp(A1*t1)-I)*(A1^-1)*B1*E;

else

syms t2 ut1;

S=[Iref;ut1];

p4=exp(A2*t2)*S;

q4=p4(1,:);

t2=solve(0==q4,t2);

t2=double(t2);

t3=T-t1-t2;

X(:,n+1)=exp(A3*t3)*exp(A2*t2)*exp(A1*t1)*X+exp(A3*t3)*exp(A2*t2)*(exp(A1*t1)-I)*A1^-1*B1*E;

end

end

end

i1(m,:) = i(end-150:end);

%   uo(m,:) = u(end-80:end);

H= plot(Iref*ones(1,length(i1(m,:))),i1(m,:));

%  set(H,'linestyle','none','marker','.','markersize',3);

hold on

drawnow

end

程序是从X(:,n+1)=exp(A3*t3)*exp(A2*t2)*exp(A1*t1)*X+exp(A3*t3)*exp(A2*t2)*(exp(A1*t1)-I)*A1^-1*B1*E;循环一次后开始第二次循环时在 X = [ i( n ); u( n ) ]; 发生错误,我认为是初始化不能放在n循环里,但是X又跟n循环有关,又不能直接放在外面,恳请各位大佬们教教新手,如何把初始化那句 X = [ i( n ); u( n ) ]; 放在n循环外面?或者让这句话只在n循环中执行一次?谢谢各位!!!!!!

matlab 数组范围内,MATLAB索引超出数组范围相关推荐

  1. 位置2处的索引超过边界总数matlab,位置 2 处的索引超出数组边界(不能超出 2)。...

    想使用fmincon函数优化求微分方程的参数,写完程序之后提示这个错误,大佬们能不能帮我看看哪里错了? 也帮忙看一下我写的程序对不对,有没有有需要改正的地方. k0=[0.023 0.000613 0 ...

  2. Matlab中出现“位置1处的索引超出数组边界(不能超过1)”

    我是一个matlab小白,前几天刚准备学习机器学习的相关知识,但是下面的代码一直提示我"位置1处的索引超出数组边界(不能超过1)". 好像出错在71行的"ans(j,:) ...

  3. matlab出现索引超出数组元素的数目(0)怎么解决

    Matlab 出现索引超出数组元素的数目 (0) 通常表示你试图访问一个空数组或者超出数组索引的范围.以下是一些可能的解决方案: 检查你的代码,确保没有在程序中使用空数组. 检查数组的索引是否正确.例 ...

  4. MATLAB位置1无法索引,位置 1 的索引超出数组范围(不能超过 1)

    clear clc; N=512; L=512; f1=300;fs=15000; T=1/fs; ws=2*pi*fs; t=(0:1:N-1)*T; x=sin(2*pi*f1*t); y=fft ...

  5. 模型预测控制 索引超出数组元素的数目(0)。_C++基础总结(二):C++基本数据类型及流控制语句详解...

    上次分享了hello world, 今天小编分享 C++基本数据类型及流控制语句 ,建议大家收藏慢慢学习,同时希望对大家的C++学习有所帮助. C++ 数组 C++ 支持数组数据结构,它可以存储一个固 ...

  6. 运行差分灰狼时出现 关于“索引超出数组元素的数目(0)和矩阵维度问题以及图例的问题”的解决办法

    问题一:索引超出数组元素的数目(0) 看截图,上面注释掉的libsvmpredict是出错的, 下面一句是修改后的. [~,~,fitness]=libsvmpredict(output_test,i ...

  7. php 数组大于1,位置 1 的索引超出数组范围(不能超过 1)。

    %清空运行环境 clc clear %速度更新参数 c1 = 1.49445; c2 = 1.49445; maxgen = 300; %最大迭代次数 sizepop = 20; %种群规模数 %个体 ...

  8. C# txt文本文件导入到dataGridView1 索引超出数组限定

    C# txt文本文件导入到dataGridView1 索引超出数组限定 private void button6_Click(object sender, EventArgs e){using (Op ...

  9. Matlab 常见错误(1)——提示“数组索引必须为正整数或逻辑值”或者“索引超出数组元素的数目”

    我自己出现这个错误的代码,是在想对契比雪夫方向图进行采样时.代码如下: S=20; dS=0:2000/(2*S):2000; theta1=0:180/(2*S):180; for k=1:41Y( ...

  10. 位置2的索引超出数组范围不能超过10_golang学习笔记--切片slice 与数组 arr

    因为我是写php的,刚开始写go的时候老是被数组坑.因为在go中的数组是固定长度,所以会存在越界的时候.而在go中也很少直接使用数组.更多的时候会使用slice(切片). 数组 数组是一个由固定长度的 ...

最新文章

  1. AI一分钟 | 程维成立滴滴股权投资公司;特斯拉董事会决定放弃私有化
  2. 撩课-Java面试宝典-第八篇
  3. C#调用DLL文件时参数对应表
  4. 关于在smarty中实现省市区三级联动
  5. 手动建立makefile简单实例解析
  6. Java基本数据类型的转换
  7. 寻找不到iframe元素
  8. Samba安装详细步骤
  9. ins与apache的区别_既然nginx比apache快,为什么nginx没有取代apache?
  10. 蓝桥杯.历届试题: 核桃数量
  11. 系统性谈谈软件可靠性——第5讲:软件测试及常见测试用例设计方法
  12. rp软件app流程图_AxureRP介绍
  13. QT常用控件——QListView控件
  14. 浏览器内核控制Meta标签说明文档(360浏览器默认极速模式)
  15. 如何将电脑文字复制到模拟器_如何将电脑中的文字复制到手机上?
  16. 永恒之蓝攻击处置方法
  17. DSP之Controlsuit和C2000Ware下载安装
  18. 振弦式传感器数据采集到水库大坝监测云平台进行监控和报警
  19. 自制简单U盘引导程序
  20. python URL解析转换成字典

热门文章

  1. POJ NOI0105-40 数1的个数
  2. UVA11039 Building designing【排序】
  3. HDU1042 n!【大数+万进制】
  4. ceil() 与 floor() 与 round()
  5. Python Tricks(十五)—— repeat(字符串重复)
  6. 黄金分割法与单峰函数求极值
  7. Python 进阶——重访 list (二)
  8. vmware 网络连接方式的说明
  9. python写webservice接口_Python开发WebService系列教程之REST,web.py,eurasia,Django
  10. python自学入门-初学 Python 者自学 Anaconda 的正确姿势是什么?