KP = 1; KI = [0.1, 0.2, 0.3, 0.4]; f = 85e3; t = linspace(0, 1, 1000); % 生成一个时间向量,表示从0秒到1秒的时间变化量 H = zeros(length(t), length(KI)); for i = 1:length(KI) ki = KI(i); H(:,i) = (2.*KP.*f+2.*KI.*f.^2.*t)./(t.^2+2.*KP.*f.*t+2.*KI.*f.^2); end figure; plot(t, H(:,1), 'LineWidth', 2); hold on; plot(t, H(:,2), 'LineWidth', 2); plot(t, H(:,3), 'LineWidth', 2); plot(t, H(:,4), 'LineWidth', 2); legend('KI=0.1', 'KI=0.2', 'KI=0.3', 'KI=0.4'); xlabel('Time (s)'); ylabel('H');数组大小不兼容,如何修改
时间: 2024-02-19 20:59:22 浏览: 160
为了解决这个问题,可以将 H 的第二个维度大小设置为 4,例如可以在代码中添加一行:
```
H = zeros(length(t), 4);
```
然后再将 H(:,i) 赋值即可。修改后的代码如下:
```
KP = 1;
KI = [0.1, 0.2, 0.3, 0.4];
f = 85e3;
t = linspace(0, 1, 1000); % 生成一个时间向量,表示从0秒到1秒的时间变化量
H = zeros(length(t), 4); % 修改 H 的第二个维度大小为 4
for i = 1:length(KI)
ki = KI(i);
H(:,i) = (2.*KP.*f+2.*KI.*f.^2.*t)./(t.^2+2.*KP.*f.*t+2.*KI.*f.^2);
end
figure;
plot(t, H(:,1), 'LineWidth', 2);
hold on;
plot(t, H(:,2), 'LineWidth', 2);
plot(t, H(:,3), 'LineWidth', 2);
plot(t, H(:,4), 'LineWidth', 2);
legend('KI=0.1', 'KI=0.2', 'KI=0.3', 'KI=0.4');
xlabel('Time (s)');
ylabel('H');
```
这样就可以顺利运行了。
相关问题
KP = 1; KI = [0.1, 0.2, 0.3, 0.4]; f = 85e3; t = linspace(0, 1, 1000); % 生成一个时间向量,表示从0秒到1秒的时间变化量 H = zeros(length(t), length(KI)); for i = 1:length(KI) ki = KI(i); H(:,i) = (2.*KP.*f+2.*KI.*f.^2.*t)./(t.^2+2.*KP.*f.*t+2.*KI.*f.^2); end figure; plot(t, H(:,1), 'LineWidth', 2); hold on; plot(t, H(:,2), 'LineWidth', 2); plot(t, H(:,3), 'LineWidth', 2); plot(t, H(:,4), 'LineWidth', 2); legend('KI=0.1', 'KI=0.2', 'KI=0.3', 'KI=0.4'); xlabel('Time (s)'); ylabel('H');数组大小不兼容
这段代码中的问题是数组大小不兼容,具体来说是 H 数组的维度与 KI 数组的长度不一致。在这段代码中,KI 是一个长度为 4 的数组,而 H 是一个大小为 (length(t), length(KI)) 的二维数组。因此,在 H 的第二个维度上,应该有 4 个元素,但是现在只有 1 个元素。要解决这个问题,可以将 H 的第二个维度大小设置为 4,例如可以在代码中添加一行:H = zeros(length(t), 4); 然后再将 H(:,i) 赋值即可。
KP = 1; KI = [0.1, 0.2, 0.3, 0.4]; f = 85e3; t = linspace(0, 1, 1000); % 生成一个时间向量,表示从0秒到1秒的时间变化量 H = zeros(length(t), 4); % 修改 H 的第二个维度大小为 4 for i = 1:length(KI) ki = KI(i); H(:,i) = (2.*KP.*f+2.*KI.*f.^2.*t)./(t.^2+2.*KP.*f.*t+2.*KI.*f.^2); end figure; plot(t, H(:,1), 'LineWidth', 2); hold on; plot(t, H(:,2), 'LineWidth', 2); plot(t, H(:,3), 'LineWidth', 2); plot(t, H(:,4), 'LineWidth', 2); legend('KI=0.1', 'KI=0.2', 'KI=0.3', 'KI=0.4'); xlabel('Time (s)'); ylabel('H');数组大小不兼容
这个问题已经在之前的回答中解决了,需要将 H 的第二个维度大小设置为 4,例如可以在代码中添加一行:
```
H = zeros(length(t), 4);
```
然后再将 H(:,i) 赋值即可。修改后的代码如下:
```
KP = 1;
KI = [0.1, 0.2, 0.3, 0.4];
f = 85e3;
t = linspace(0, 1, 1000); % 生成一个时间向量,表示从0秒到1秒的时间变化量
H = zeros(length(t), 4); % 修改 H 的第二个维度大小为 4
for i = 1:length(KI)
ki = KI(i);
H(:,i) = (2.*KP.*f+2.*KI.*f.^2.*t)./(t.^2+2.*KP.*f.*t+2.*KI.*f.^2);
end
figure;
plot(t, H(:,1), 'LineWidth', 2);
hold on;
plot(t, H(:,2), 'LineWidth', 2);
plot(t, H(:,3), 'LineWidth', 2);
plot(t, H(:,4), 'LineWidth', 2);
legend('KI=0.1', 'KI=0.2', 'KI=0.3', 'KI=0.4');
xlabel('Time (s)');
ylabel('H');
```
如果您还有其他问题,请继续提问。
阅读全文