EDA365电子论坛网
标题:
为什么循环的结果都一样
[打印本页]
作者:
aid4her
时间:
2023-1-10 15:51
标题:
为什么循环的结果都一样
G=6.67*10^(-11);
' N/ [7 L( {8 t' J9 O7 d- l& z
r=100;
. w, z! d& M( N# h- {
h=500;
9 P! M* j* r% x% `8 V
m=0.1*(4/3)*pi*r^3;
2 [7 F, T& ^/ b% J4 M
g=zeros(41,41);
! U, a& T8 t; y+ w5 `
for x=-1000:50:1000
! t, e# |+ d5 l6 U
for y=-1000:50:1000
! W9 X$ d5 }1 d- x- c7 p1 w
g(1:41,: )=G*m*h/((x^2+y^2+h^2)^(3/2));
/ `. X4 x; ~3 B) C. |: g
end
. l2 N/ _1 m) z- `% }5 p
end
, n- s& B2 p" L) d N6 c( q; q
( N. X' z2 S$ |. P' e
作者:
R_myself
时间:
2023-1-10 16:54
你的赋值语句不对,循环中每次赋值都是给g矩阵的整体赋值,所以结果就是最后一次循环给g整体赋值的结果
# R: ?* q& J8 l# }9 X; y1 |: s1 Z
x=-1000:50:1000;
7 J$ ~% N& @( H6 y6 A; v; _. c
y=-1000:50:1000;
, i* b% C7 b" w* U; x& a7 P- T, P
for i=1:41
. M3 V- {; x7 y3 c
for j=1:41
' t1 A1 r6 x8 w
g(i,j)=G*m*h/((x(i)^2+y(j)^2+h^2)^(3/2));
) U4 M! ?* i/ R- l! T
end
+ Z6 F2 a4 x! e9 z1 Z9 M# P [
end
, a3 I1 {& J" } l" s' Y
复制代码
3 ~) b: A) N3 U$ s5 s5 v; G" \
看一下这是不是你要的结果,如果不是请自己理解并修改一下吧。
作者:
fuu65iwi
时间:
2023-1-10 17:06
这严格来说就不是MATLAB问题,是你循环逻辑写错了,你在循环中没有控制变量,在不停地重复相同的赋值。打个比方,裁缝店来了高个子客人应该给长衣服,来了胖客人应该给宽衣服,裁缝店这个提供衣服的循环,应当根据控制变量也就是客人的具体身材,进行控制。可你现在这个循环,实质上是不管来了什么身材的客人,统统扔出来41*41套一模一样的衣服。
6 k1 s, N7 }* D5 [* q) Y% }0 r" E5 l
改成
6 K7 g; ?& E( O& U$ K8 G; L: B$ H
xSet = -1000:50:1000;
3 r& W0 q7 U! n+ @
ySet = -1000:500:1000;
; J! U' U2 J ` ^% @
for index_row = 1 : 1 : numel( xSet )
* S6 p1 ^9 c& n: ^8 K' ~% J- W
x = xSet( index_row );
+ p4 f* I6 L8 c$ z* ?" a; n
for index_column = 1 : 1 : numel( ySet )
; _$ |' v8 ^& o3 G5 {) B& M [
y = ySet( index_column );
( ~, y; P( e6 O; s
g( index_row, index_column ) = G * m * h / ( ( x^2 + y^2 + h^2 ) ^ ( 3/2 ) );
) s# N# h* y& @5 r0 q
end
K+ C6 T) {3 y1 a* y
end
作者:
I_believe
时间:
2023-1-10 17:09
这么改也可以:
) Z$ w+ F2 B L8 W' ]1 f$ m4 t
clear;clc
- j3 t' ~1 G$ z# {' q' t
, [( q* B1 n6 q. f
G=6.67*10^(-11);
- f& A2 r3 h2 n
r=100;
- Z! E' ~3 L* R& y& z! _% M
h=500;
" `/ A& h {! E' K+ u& ~
m=0.1*(4/3)*pi*r^3;
% w0 K9 S0 b& _% t! V
g=zeros(41,41);
; C4 `( v7 Q) A" U0 d9 h
5 y p3 M7 T; K* t
i = 0;
1 Y0 ~) [# Y4 M) j# d$ n, L
for x=-1000:50:1000
7 I2 `4 O) b! k) q
i = i + 1;
( F+ G# M" d, |; H" X. u0 M
y = -1000:50:1000;
: W+ \! F- O3 O
g(i,: )=G*m*h./((x^2+y.^2+h^2).^(3/2));
+ g0 n( r" r) N1 A% \+ ^4 h! U. L
end
欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/)
Powered by Discuz! X3.2