matlab中这个for循环代码如何优化?

matlab中这个for循环代码如何优化?,第1张

N=1e6;

paradata =50;

nco_acc=zeros(N)

for i=2:N

    nco_acc(i)=nco_acc(i-1)+paradata

    nco_acc(i)=mod(nco_acc(i),2^33)

 end

nco_acc=zeros(N)提前指定变量大小,能显著提高循环速度。不用随机寻址。并且你这个变量的第一个元素是什么需要指定。

题主的问题实际上是变参数二重积分问题。解决变参数积分的途径:1、利用int()函数求出其解析值,但对于复杂的积分表达式,是有一定的难度;2、利用数值积分函数,如integral2()、quad2(),而数值积分函数的特点是不能有多余的未知变量。

由于题主给出的表达式比较复杂,要解决这个问题。可以这样来处理。即当Rb为某一数值时,求出其y=Q1/Q2值。再利用for循环语句求得,y—Rb的一系列对应值,最后用plot函数绘出其关系曲线图。所以题主可以在原代码进行修改,修改的部位

%syms Rb 去掉

Rb0=100:10:200%增加

for i=1:length(Rb0) %增加

Rb=Rb0(i)%增加

syms r fai %增加

eq1=。。。%被积函数

eq2=。。。%被积函数

Q1=integral2(f1,4*1e-6,5*1e-6,-pi/2,pi/2)%改写

Q2=integral2(f2,4*1e-6,5*1e-6,-pi/2,pi/2)%改写

y=Q1/Q2

y0(i)=y%增加

end%增加

plot(Rb0,y0,'b')

xlabel('Rb(kN)'),ylabel('y(μm)') %增加

我知道的两个方法:

1.将仿真出来的vwf转化成 matlab可以读取的 数据文件读到matlab中查看结果,可以把vwf另存为tbl文件,这个文件的格式很简单(功能仿真时),在matlab中编个简单的程序就可读出仿真结果,以前我这样干过,反过来也可以在matlab中生成tbl然后转化成 vwf文件作为输入

2. 将设计编译导出成verilog 文件在 matlab中用matlab的modelsim联合仿真实现,我只会用matlab中进行verilog仿真,全过程没做过


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8080776.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存