gpt4 book ai didi

arrays - 如何在 Matlab 中创建一个数组但同时运行一个函数?

转载 作者:行者123 更新时间:2023-12-02 22:27:14 26 4
gpt4 key购买 nike

我正在尝试用我正在运行的函数中的值填充一个数组。在此函数中,我以 0.01 的增量将变量 z20 更改为 0.99。同时我想用这些值填充一个数组。我试过 while 循环和 for 循环。如何只用一个 for 循环来写这个?

我的代码:

Ys = y(2000);
Mp = ((max(y)-Ys)/Ys)*100;
[max, i] = max(y);
tp = t(i);
z = sqrt(((log(Mp))^2)/((pi*pi)+(log(Mp))^2));


%Given Equations
wd = pi/tp;
wn = wd/(sqrt(1-(z*z)));
ts = 4.6/(z*wn);
tr = 1.8/wn;

%for loop for z from 0 to 0.99
for i = 1:100;
for z2 = 0:0.01:0.99
%tr*wn = Fa
Fa(i) = 2.917*z2^2 - 0.4167*z2 + 1;
i = i + 1;
if i >= 100;
break;
end
end
end

find_zeta = interp1(Fa, 1.8);

disp(Fa);
disp(find_zeta);

我遇到的错误:我的数组中只有 1

最佳答案

您可以在“矢量化”matlab 语句中不使用循环来完成

z2 = 0:0.01:0.99;
Fa = 2.917*z2.^2 - 0.4167.*z2 + 1;

首先,计算您需要的 z2 值。接下来,逐个元素地对向量进行操作(注意 .^ 语法)计算 Fa。 ^.^ 运算符之间存在根本区别,您真的很想知道它们之间的区别。通常,您可以将 . 添加到运算符,这意味着它将对数组的各个标量元素起作用。 Read about matrix and array operators here .例如:

A = rand(10);
B = rand(10);
% matrix multiplication
C=A*B;
% element by element multiplication
C=A.*B

你得到的提示只是说明你做的事情效率低下。由于 matlab 事先不知道 Fa 的大小,因此每次追加时都需要重新分配数组。您仍然可以使用它,只是效率低下。

关于arrays - 如何在 Matlab 中创建一个数组但同时运行一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12782787/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com