24小时热门版块排行榜    

查看: 650  |  回复: 5

lrpe203

新虫 (初入文坛)

[求助] matlab

想要用matlab 对一个矩阵LL进行赋值变换 如 LL(i,j)=a
如果a不等于0并且LL(i-1,j),LL(i,j-1),LL(i,j+1),LL(i+1,j) 中有0的,现在想对其中为0的 LL(i-1,j),LL(i,j-1),LL(i,j+1),LL(i+1,j) 进行赋值a 如果rand(1)>=0.5
则将其中 LL(i-1,j) ,LL(i,j-1) ,LL(i,j+1) ,LL(i+1,j)为0的附值为a

这个是我编写的程序  但是算出的结果 不是正确的  请教各位帮忙看看 改改 求助求助啊

% 赋初值部分
Ln=100;
L=zeros(Ln);
LL=zeros(Ln+2);
Q=40;
p=0.25;
LL(=p;
K=0.5;
pps = LL -rand(Ln+2);
LL(find(pps<=0)) = 0;
LL(find(pps>0)) = 1;
LL = LL.*randi(Q,Ln+2,Ln+2);
% 加入条件后赋值部分

for i=2Ln+1)
   for j=2Ln+1)
          a=LL(i,j);
          L(i-1,j-1)=LL(i,j);
          A=[LL(i-1,j),LL(i,j-1),LL(i,j+1),LL(i+1,j)];
         if a~=0&&all(A)==0   
             m=rand(1);
              if m>=K&&i-2>0&&LL(i-1,j)==0           
               L(i-2,j-1)=a;
              end
              if m>=K&&j-2>0&&LL(i,j-1)==0
                 L(i-1,j-2)=a;
              end
              if m>=K&&j~=(Ln+1)&&LL(i,j+1)==0
                 L(i-1,j)=a;
              end
              if m>=K&&i~=(Ln+1)&&LL(i+1,j)==0
                 L(i,j-1)=a;   
              end
          end
  end   
end
回复此楼

» 猜你喜欢

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

lrpe203

新虫 (初入文坛)

劳烦各位写手帮忙看看
2楼2013-07-27 10:37:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhfzh

木虫 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
是不是all用错了。还有你为什么不在LL操作?
3楼2013-07-28 01:34:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lrpe203

新虫 (初入文坛)

引用回帖:
3楼: Originally posted by zhfzh at 2013-07-28 01:34:48
是不是all用错了。还有你为什么不在LL操作?

不是all的原因啊 LL是一个存储L的中间变量 程序的循环后L矩阵的值会被赋给LL
4楼2013-07-30 12:29:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xian_xh

金虫 (小有名气)

问题能够再给清楚一些吗,LL的作用是为了防止边缘溢出吧。
5楼2013-07-31 12:18:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lrpe203

新虫 (初入文坛)

引用回帖:
5楼: Originally posted by xian_xh at 2013-07-31 12:18:12
问题能够再给清楚一些吗,LL的作用是为了防止边缘溢出吧。

自己弄出来了 谢谢了
6楼2013-08-02 21:28:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 lrpe203 的主题更新
信息提示
请填处理意见