24小时热门版块排行榜    

查看: 1917  |  回复: 9
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

wzp0098

木虫 (著名写手)

[求助] 利用for 语句画图

K=-10:1:10;
for m=1:K;
    K1=Length(K)
    w=10;
K2=K1+2*w;x=0.2;
r1=8;r2=0.001*r1;T=3;
A=[-r1 r2-r1 -i*x i*x 0 0 0 0;
   0 -r2 0 0 0 0 i*T -i*T;
   -2*i*x -i*x -r1-i*K1*0.5 0 -i*T 0 0 0;
   2*i*x i*x 0 -r1+i*K1*0.5 0 i*T 0 0;
   0 0 -i*T 0 -r2-i*(K1+K2)*0.5 0 i*x 0;
   0 0 0 i*T 0 -r2+i*(K1+K2)*0.5 0 -i*x;
   i*T 2*i*T 0 0 i*x 0 -r2-r1+i*(K1-K2)*0.5 0;
   -i*T -2*i*T 0 0 0 -i*x 0 -r2-r1-i*(K1-K2)*0.5];
B=[-r1;0;-i*x;i*x;0;0;i*T;-i*T];
Y=A\B;
y=imag(Y(3));
end
plot(K,y)
我想利用for循环语句画出图形,可是无法运行,求大虾赐教!
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   关注TA 给TA发消息 送TA红花 TA的回帖

duotojh

金虫 (小有名气)

★ ★
臭水沟: 金币+2, 谢谢交流~~ 2012-07-09 21:24:26
你的意图应该是每轮循环算出的P连接成曲线,但程序中保留的是最后一轮P值(单值),
因此画出的图形是单点当然看不到(除非将单点作标记才可以看到,例如三角符标记等等)
只需添加P向量化,并修改循环语句中的P赋值这一句即可,修改程序如下:
K = -10:0.1:10;
P = []; % <-------------------添加此句分配P为向量
for n=1:length(K);
        K1 = K(n);
        w = 10;
        K2 = K1+2*w; x = 0.5;
        r1 = 8; r2 = 0.001*r1; T = 3;
        A=[  -r1   r2-r1  -i*x      i*x      0           0       0              0;
                  0    -r2       0       0       0           0      i*T           -i*T;
           -2*i*x  -i*x -r1-i*K1*0.5 0     -i*T          0       0              0;
                2*i*x  i*x       0  -r1+i*K1*0.5 0          i*T      0              0;
                  0     0      -i*T      0 -r2-i*(K1+K2)*0.5 0      i*x             0;
                  0     0        0      i*T      0 -r2+i*(K1+K2)*0.5 0             -i*x;
                 i*T 2*i*T       0       0      i*x          0 -r2-r1+i*(K1-K2)*0.5 0;
                -i*T -2*i*T      0       0       0         -i*x      0 -r2-r1-i*(K1-K2)*0.5];
        B = [-r1;0;-i*x;i*x;0;0;i*T;-i*T];
        Y = A\B;
    P(n) = imag(Y(3)); % <---------------------------P向量中的元素赋值
end
plot(K,P)
用freemat画出的图形如下
8楼2012-07-09 13:06:49
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 10 个回答

fjtony163

版主 (文坛精英)

米米

优秀版主优秀版主优秀版主优秀版主优秀版主

【答案】应助回帖

★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
xiegangmai: 金币+1, 谢谢参与 2012-07-08 09:54:21
wzp0098: 金币+5, 有帮助 2012-07-08 11:11:48
K 是一个行向量,m定义为1到一个行向量肯定运行不了啊。m指的是循环次数,应该就是m=1:10这样的。能稍微具体说下是个怎样的式子么。
2楼2012-07-08 09:19:50
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

wzp0098

木虫 (著名写手)

引用回帖:
2楼: Originally posted by fjtony163 at 2012-07-08 09:19:50
K 是一个行向量,m定义为1到一个行向量肯定运行不了啊。m指的是循环次数,应该就是m=1:10这样的。能稍微具体说下是个怎样的式子么。

谢谢,我就是想画出y随K1变化的图像!K1取一个值,就可以得到一个y值,利用for语句循环。做了修改,还是不行!
K1=-10:1:10;
for m=1:Length(K);
    K1=m
    w=10;
K2=K1+2*w;x=0.2;
r1=8;r2=0.001*r1;T=3;
A=[-r1 r2-r1 -i*x i*x 0 0 0 0;
   0 -r2 0 0 0 0 i*T -i*T;
   -2*i*x -i*x -r1-i*K1*0.5 0 -i*T 0 0 0;
   2*i*x i*x 0 -r1+i*K1*0.5 0 i*T 0 0;
   0 0 -i*T 0 -r2-i*(K1+K2)*0.5 0 i*x 0;
   0 0 0 i*T 0 -r2+i*(K1+K2)*0.5 0 -i*x;
   i*T 2*i*T 0 0 i*x 0 -r2-r1+i*(K1-K2)*0.5 0;
   -i*T -2*i*T 0 0 0 -i*x 0 -r2-r1-i*(K1-K2)*0.5];
B=[-r1;0;-i*x;i*x;0;0;i*T;-i*T];
Y=A\B;
y=imag(Y(3));
end
plot(K1,y)
3楼2012-07-08 11:17:39
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

fjtony163

版主 (文坛精英)

米米

优秀版主优秀版主优秀版主优秀版主优秀版主

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★
臭水沟: 金币+2, 谢谢交流~~ 2012-07-08 18:02:36
wzp0098: 金币+5, 有帮助, 谢谢 2012-07-09 10:30:27
引用回帖:
3楼: Originally posted by wzp0098 at 2012-07-08 11:17:39
谢谢,我就是想画出y随K1变化的图像!K1取一个值,就可以得到一个y值,利用for语句循环。做了修改,还是不行!
K1=-10:1:10;
for m=1:Length(K);
    K1=m
    w=10;
K2=K1+2*w;x=0.2;
r1=8;r2=0.001*r1;T=3 ...

从中间的赋值到end之前的部分我不知道是啥,但只要你认为输对了就没事。

关键是赋值之前的部分,就我的理解应该是
K=-10:1:10
for m=1:length(K)
K1=K(m)
w=10;
………………
4楼2012-07-08 11:30:10
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见