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 Vm=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 pend, 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 Zx=-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, Pfor 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! Vg=zeros(41,41);; C4 `( v7 Q) A" U0 d9 h

5 y  p3 M7 T; K* ti = 0;
1 Y0 ~) [# Y4 M) j# d$ n, Lfor 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