解决问题

24次浏览(最近30天)
Ratchapon Nilprapa
Ratchapon Nilprapa 2021年9月23日9时57分
评论: Rik 2021年9月26日13:34
我是Matlab新手,在第14行我对这个解决方案有一个问题。请给我任何建议。非常感谢。
2评论
Ratchapon Nilprapa
Ratchapon Nilprapa 2021年9月26日10时27分
很抱歉,谢谢你的建议,约翰·德里科先生。

登录以发表评论。

公认的答案

Rik
Rik 2021年9月23日10时17分
编辑:Rik 2021年9月23日10:20
看起来你希望根据Erf的值发生不同的事情:对于每个小于2的元素,你希望y有一个值,而对于其他元素,你希望有一个不同的计算。
但这不是你告诉Matlab要做的。你看到那些橙色的曲线了吗?这些都是警告。你应该阅读并处理它们。在这种情况下,我怀疑这就是解决方案:使用for循环。
小块土地= (0.2 0.6 0.7333);
y=NaN(尺寸(Erf));
对于n=1:numel(Erf)
如果Erf(n)<2
y(n)=-0.3725*Erf(n)^2;%和这一行的其余部分
其他的
y (n) =(-0.0109 *小块土地(n) ^ 2);%和这一行的其余部分
终止
终止
您还可以使用逻辑索引一次性完成此操作,在这种情况下,您需要使用元素操作(.^而不是^,乘法和除法也是如此)。
小块土地= (0.2 0.6 0.7333);
y=NaN(尺寸(Erf));
L =小块土地< 2;
y(L)=-0.3725*Erf(L)。^2;
L=~L;
y (L) = -0.0109 *小块土地(L) ^ 2;
这两个代码块产生相同的结果。
2评论
Rik
Rik 2021年9月26日13:34
不客气。如果任一解决方案解决了您的问题,请单击“接受答案”按钮。如果你觉得其他答案也有帮助,请点击投票按钮。
如果这两种方法都不能解决您的问题,请随意评论您剩余的问题。

登录以发表评论。

更多答案(1)

沃尔特·罗伯森
沃尔特·罗伯森 2021年9月23日10时13分
编辑:沃尔特·罗伯森 2021年9月23日10时14分
小块土地= (0.2 0.6 0.7333);
Erf是一个向量。
y=(-0.3725*(Erf)^2)+(1.2144*(Erf))+(0.0006);
你有Erf^2。但在MATLAB中,^运算符是重复的矩阵乘法——因此Erf^2是(Erf*Erf),其中*是代数矩阵乘法运算符,也称为内积。对于内积A*B,A(第一个操作数)的列数必须与B(第二个操作数)的行数相同。有一个1 x 3的向量,因此实际上有(1 x 3)*(1 x 3),但第一个操作数中的列数3与第二个操作数(1)中的行数不匹配。
您可能需要逐元素幂运算符,它在MATLAB中是.^运算符
y=(-0.3725*(Erf)。^2)+(1.2144*(Erf))+(0.0006);
注意:第19行完全覆盖了y,覆盖了第18行中赋给y的值。
注意:如果你发布代码,志愿者会更容易帮助你,而不是发布代码的图片。不要为了测试代码或指出代码的哪些部分有困难而让志愿者手工输入代码。
1评论
Ratchapon Nilprapa
Ratchapon Nilprapa 2021年9月26日11:00
谢谢你的好意,你向我解释得很清楚,沃尔特·罗伯森。

登录以发表评论。

标签

社区寻宝

在MATLAB Central中查找宝藏,了解社区如何帮助您!

开始狩猎!

翻译人