如何使用MATLAB在嵌套的for循环中使每个数组彼此相乘?

时间:2019-04-17 04:40:20

标签: matlab

目前,我正在从事一个涉及降压转换器的学校项目。随着通过电感器的电流增加,其电感减小(最有可能)。每个阶段都添加一个电感器。通过添加一个电感器,我将电流除以每个添加的电感器。电流从0上升到500。

我与以下代码有关的问题是,它没有正确使用i_L(i,j)的每个数组值。我收到一些负值,这是绝对错误的。

例如...

在500 Amps的10相电流下,每个电感器使用50 A的电流。现在L将在

之后设计
i_L(i,j)=current(j)./phases(i)= 500/10=50amps

L(i,j)= (-9.22297516731983*10^(-16).*(50^(4)))+(9.96260934359008*10^(-14).*(50^(3)))-(3.6355216850551*10^(-12).*(50^(2)))+(9.0205832462444*10^(-12).*(50^(1)))+1.06054781561763E-07 = 1.04106*10^(-7)

以此类推

创建10x10 = 100个单元格

clc; clear all;
    phases=linspace(1,10,10);
    current=linspace(0,500,10); 

for j = 1:10
    for i=1:10
          i_L(i,j)=current(j)./phases(i);

          L(i,j)=(-0.000000000000000922297516731983*(i_L(i,j).^(4)))+(0.000000000000099626093435900800*(i_L(i,j).^(3)))-(0.000000000003635521685055100000*(i_L(i,j).^(2)))+(0.000000000009020583246244400000*(i_L(i,j).^(1)))+0.000000106054781561763000000000;
    end
end

谢谢!

1 个答案:

答案 0 :(得分:1)

您的矩阵i_L(i,j)的值最大为500 = 500(电流)/ 1(安培)。 您使用的多项式将生成大于130的负解。 因此,该操作正在使用每个正确的数组值。 如果您对解决方案不满意,也许应该重新评估多项式。

尝试:

x=[0:1:500];
y=(-9.22297516731983*10^(-16).*(x.^(4)))+(9.96260934359008*10^(-14).*(x.^(3)))-(3.6355216850551*10^(-12).*(x.^(2)))+(9.0205832462444*10^(-12).*(x.^(1)))+1.06054781561763E-07;
plot(x,y)

您将看到多项式将针对负值与负无穷大发生分歧。