clc;clear; n = 50; for i=1:n global m; m = randsrc()*randi([0,20]); b0=2.0000+0.01*m; wc=4.50625+0.01*m; wo=18.025+0.01*m; sim('ADRC2') plot(t,y1,'b'); hold on name = ['y_back',int2str(i)] ; xlswrite(name,y1); [settlingtime,pos]=zhibiao1(t,y1); [settlingtime1,attenuation]=zhibiao2(t,y1); S(i)=settlingtime; P(i)=pos; P1(i)=attenuation; end
时间: 2023-12-05 20:06:15 浏览: 58
这段代码是 MATLAB 代码,它的作用是运行模拟仿真并记录仿真结果。具体来说,它使用了一个名为 ADRC2 的模型进行仿真,并将仿真结果保存到了 Excel 文件中。同时,它还计算了仿真结果的一些指标,如调节时间(settling time)和超调量(attenuation),并将它们存储到了 S、P 和 P1 这三个数组中。
相关问题
利用for循环实现1+1.5+2+2.5+…+10,并记录每次求和后的数值,请指出代码错误并改正。 clc clear n=10; sum=0; for i=1:0.5:n a(i)=sum+i end
代码中的错误有两个:
1. 在 for 循环中,步长不能为小数,应该改为步长为 1。
2. 在循环体中,应该先将当前位置的数值赋给 a(i),再计算 sum 的值。
改正后的代码如下:
```matlab
clc
clear
n = 10;
sum = 0;
for i = 1:2:n
a(i) = sum + i;
sum = a(i);
end
```
这段代码可以实现每次加上 0.5 的数列求和,并且记录每次求和后的数值。
利用for循环实现1+0.5+1+1.5+2+2.5+…+10,并记录每次求和后的数值,请指出代码错误并改正。 clc clear n=10; sum=0; for i=1:0.5:n a(i)=sum+i end
根据题意,应该是要让循环变量 i 从 1 开始每次增加 0.5,直到小于等于 10。同时在每次循环中,累加器 sum 的值应该增加 i 的值,并将 sum 的值记录在数组 a 中。以下是修改后的代码:
```
clc
clear
n = 10;
sum = 0;
for i = 1:0.5:n
sum = sum + i;
a(i*2) = sum;
end
```
注意到数组下标应该是整数,因此需要将 i 乘以 2。另外,由于第一个循环中的 i 取值为 1,因此 a(2) 应该记录这个值。如果要记录每一次循环中的 sum 值,可以将 a 改为一个行向量,然后使用拼接操作符将每次的 sum 值添加到 a 后面:
```
clc
clear
n = 10;
sum = 0;
a = [];
for i = 1:0.5:n
sum = sum + i;
a = [a, sum];
end
```
阅读全文