【发布时间】:2015-07-09 16:33:32
【问题描述】:
我正在尝试构建一个代码,其中不针对某些特定值计算方程式。我有一个网格网格,其中 x 和 y 有几个值,我想包含一个 for 循环,该循环将为网格网格中的大多数点计算一些值,但我试图在该循环中包含一个条件,如果这些点有一个指定索引,不计算该值。在我的第二组 for/if 循环中,我想说对于 i 和 k(行和列)的所有值,除了指定的 i 和 k 值(在 if环形)。我现在正在做的事情不起作用......
我得到的错误是:
The expression to the left of the equals sign is not a valid target for an assignment.
这是我目前的代码。我真的很感激对此的任何建议!提前致谢
U_i = 20;
a = 4;
c = -a*5;
b = a*10;
d = -20;
e = 20;
n = a*10;
[x,y] = meshgrid([c:(b-c)/n:b],[d:(e-d)/n:e]');
for i = 1:length(x)
for k = 1:length(x)
% Zeroing values where cylinder is
if sqrt(x(i,k).^2 + y(i,k).^2) < a
x(i,k) = 0;
y(i,k) = 0;
end
end
end
r = sqrt(x.^2 + y.^2);
theta = atan2(y,x);
z = zeros(length(x));
phi = zeros(length(x));
for i = 1:length(x)
for k = 1:length(x)
if (i > 16 && i < 24 && k > 16 && k <= length(x))
z = 0;
phi = 0;
else
z = U_i.*r.*(1-a^2./r.^2).*sin(theta); % Stream function
phi = U_i*r.*(1+a^2./r.^2).*cos(theta); % Velocity potential
end
end
end
【问题讨论】:
-
逻辑语句需要使用
==,而不是=。话虽这么说,该位置的if语句不起作用,它需要扩展(例如i > a && i < b && k > c && k < d或其他)。将来请发布完整的错误消息和堆栈跟踪,以便其他人更容易找到问题区域。 -
您对如何重写该 if 语句有什么建议吗?我最初确实有逻辑陈述,但因为那也不起作用,所以我想我改变了它!编辑帖子以现在包含它们。
-
我编辑了我的原始评论,可能在您输入的时候。如何重写它取决于循环的意图。
-
好的,谢谢。代码现在运行,但似乎并没有将这些特定值保持为零..
-
使用the debugger 浏览您的代码