24小时热门版块排行榜    

CyRhmU.jpeg
查看: 621  |  回复: 4

wgy318

金虫 (小有名气)

[交流] 【求助】关于编程的一个问题已有3人参与

我现在有一个小程序,想把数组B=[j-1,j+1,j+17,j+18]
中满足条件的值赋给j,数组B中满足条件的应该有两个,但是每次输出j时,总是给出的是一个值。想请教一下大家,有什么可以解决的办法吗?下面是部分程序:
for i=1:3
     for i=1;289
         if jiedian(i).flag==1
            j=i;
         end
     end
     K=4*s/(50).*A;
%      getfield(jiedian,'liulv')
    for i=1:289
         Q(i)=jiedian(i).liulv;
    end
    P=Jacobian(K,Q);
    for i=1:289
       jiedian(i).yaqiang=P(i) ;
    end
  if j>=2 & j<=16
           jiedian(j-1).liulv=2*s*(jiedian(j).yaqiang+jiedian(j-2).yaqiang+jiedian(j+17).yaqiang+jiedian(j+16).yaqiang);
           jiedian(j+1).liulv=2*s*(jiedian(j).yaqiang+jiedian(j+2).yaqiang+jiedian(j+18).yaqiang+jiedian(j+19).yaqiang);
           jiedian(j+17).liulv=2*s*(jiedian(j+16).yaqiang+jiedian(j+18).yaqiang+jiedian(j).yaqiang+jiedian(j+34).yaqiang+jiedian(j-1).yaqiang+jiedian(j+35).yaqiang);
           jiedian(j+18).liulv=2*s*(jiedian(j+17).yaqiang+jiedian(j+19).yaqiang+jiedian(j+1).yaqiang+jiedian(j+35).yaqiang+jiedian(j).yaqiang+jiedian(j+36).yaqiang);
            D=[(1-jiedian(j-1).flag)*v(j-1),dian(j-1).liulv,(1-jiedian(j+1).flag)*v(j+1),dian(j+1).liulv,(1-jiedian(j+17).flag)*v(j+17),dian(j+17).liulv,(1-jiedian(j+18).flag)*v(j+18),dian(j+18).liulv]
            t=min(D)
            B=[j-1,j+1,j+17,j+18]
            l=size(B);
            ll=l(2);
             for k=1:1:ll
                 jiedian(B(k)).flag=jiedian(B(k)).flag+t*jiedian(B(k)).liulv.(B(k));
             end
%              jiedian(8).flag;
                 for k=1:1:ll
                     if jiedian(B(k)).flag==1
                        j=B(k);
%                         jiedian(B(k)).flag=jiedian(B(k)).flag+1;
                     end
                     
                 end
         end
   
   
   
   
   
   
end
回复此楼

» 猜你喜欢

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

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

懵懂学童

金虫 (小有名气)

★ ★
adu886886(金币+2):鼓励应助!欢迎常来仿真模拟板块! 2010-07-16 08:34:43
wgy318(金币+8): 2010-07-16 08:59:11
j的值被覆盖了,可以定义一个数组,将数组B中满足条件的值赋给这个数组。
例如:if jiedian(B(k)).flag==1  
           A(K)=B(k);
            if A(k)==0
               A(k)=[];
            end
         end
2楼2010-07-15 20:46:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wgy318

金虫 (小有名气)

[quote]Originally posted by 懵懂学童 at 2010-07-15 20:46:34:
j的值被覆盖了,可以定义一个数组,将数组B中满足条件的值赋给这个数组。
例如:if jiedian(B(k)).flag==1  
           A(K)=B(k);
            if A(k)==0
               A(k)=[];
            end
     ... [/quote
这个数组里的元素的个数可以变吗?如果这个数组设定的是六个,但是判断之后满足条件的是3个,那么加到这个数组里面,会不会因为没有填满数组而不能计算呢?
3楼2010-07-16 09:05:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

free--fire

新虫 (小有名气)

★ ★
zzuwangshilei(金币+2):多谢指出问题 2010-07-16 10:49:07
wgy318(金币+3): 2010-07-17 09:09:51
引用回帖:
Originally posted by wgy318 at 2010-07-15 16:37:08:
我现在有一个小程序,想把数组B=[j-1,j+1,j+17,j+18]
中满足条件的值赋给j,数组B中满足条件的应该有两个,但是每次输出j时,总是给出的是一个值。想请教一下大家,有什么可以解决的办法吗?下面是部分程序:
f ...

(错误一)第二行分号改成冒号。
(危险二)最外层循环用i做下标,但是紧跟着内层循环也是用i做下标,内层的下标i会将外层的下标覆盖,但是不会提示语法错误。
我是流,是浮云天上游;我是虎,是大虫卧山谷。
4楼2010-07-16 09:47:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

懵懂学童

金虫 (小有名气)


zzuwangshilei(金币+1):积极参与 2010-07-16 10:49:27
wgy318(金币+1):5 2010-07-17 09:34:21
数组B中满足条件的值的个数最多为数组B的长度,A(K)=B(k)语句将满足条件的值赋给数组A,而不满足条件的位置默认为0,所以此时数组A的长度和数组B一样。利用A(k)=[]语句,可以将数组A中的默认值置为空矩阵,只剩数组B中满足条件的值。
赞成4楼提出的问题,应该注意一下程序中的细节问题。
5楼2010-07-16 10:08:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 wgy318 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见