首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用MATLAB在嵌套的for循环中使每个数组相互相乘?

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

Stack Overflow用户
提问于 2019-04-17 12:40:20
回答 1查看 36关注 0票数 0

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

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

例如..。

在10相500安培时,每个电感使用50安培。现在,L将在

代码语言:javascript
运行
复制
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个单元格

代码语言:javascript
运行
复制
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

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2019-04-17 19:31:44

矩阵i_L(i,j)的值最高可达500=500(当前)/1(Amp)。您正在使用的多项式正在为大于130的值生成负解。因此,操作正确地使用了每个数组值。如果你对解决方案不满意,也许你应该重新计算多项式。

尝试:

代码语言:javascript
运行
复制
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)

你会看到,对于正值,多项式会偏离负无穷大。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55720000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档