首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在matlab中用if,elseif和else构造一个矩阵

在matlab中用if,elseif和else构造一个矩阵
EN

Stack Overflow用户
提问于 2014-03-09 14:24:55
回答 1查看 347关注 0票数 0

有人能帮我吗。我试图在matlab中构建一个矩阵,使用if、elseif和其他方法,但它不适用于我。如果我跳过最后一句,一切正常工作,但如果我运行所有东西,包括最后一句,如果N==L(i)N==R(i)不工作。所以,如果我跳过最后一个句子if N==1elseif N>=2 && N<=4elseif N>=5 && N<=9elseif N==L(i)elseif R==L(i),但是如果我运行其他所有的,如果N==L(i)R==L(i)不工作的话。

代码语言:javascript
复制
N = 72; 
M = 72;
adj = zeros(N,M)
L = [10:7:M-13]
R = [16:7:M-7]




for N = 1:M
    for i = 1:ceil((M-10)/15)

    if N==1
        adj(1,2:4)= 1

    elseif N>=2 && N<=4

              adj(N,(N+3))=1
              adj(N,(N+4))=1
              adj(N,(N+5))=1

      elseif N>=5 && N<=9

              adj(N,(N+5))=1
              adj(N,(N+6))=1
              adj(N,(N+7))=1

      elseif N==L(i)

              adj(N,N+7)=1
              adj(N,N+8)=1


      elseif N==R(i)

              adj(N,N+6)=1
              adj(N,N+7)=1

    else
              adj(N,N+6)=1
              adj(N,N+7)=1
              adj(N,N+8)=1    
    end


    end
end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-09 14:43:49

尝试使用switch语句

代码语言:javascript
复制
N = 72; 
M = 72;
adj = zeros(N,M);
L = [10:7:M-13];
R = [16:7:M-7];

for N = 1:M
    for i = 1:ceil((M-10)/15)

        switch(N)

            case {1}
               adj(1,2:4)= 1;

            case {2:4}
              adj(N,(N+3))=1;
              adj(N,(N+4))=1;
              adj(N,(N+5))=1;

            case {5:9}
              adj(N,(N+5))=1;
              adj(N,(N+6))=1;
              adj(N,(N+7))=1;

            case {L(i)}
              adj(N,N+7)=1;
              adj(N,N+8)=1;

            case {R(i)}
              adj(N,N+6)=1;
              adj(N,N+7)=1;

            otherwise
              adj(N,N+6)=1;
              adj(N,N+7)=1;
              adj(N,N+8)=1;  
            end


    end
end

这给出了与您的代码略有不同的答案。注意,只有第一个令人满意的case将被触发。因此,如果{5:9}{L(i)}都为真,则只会触发{5:9}情况。

另外,它可能只是一个错误,或者我不理解它的措辞,但是您是在您的描述中编写R==L(i),但它没有出现在代码中。

编辑:

从下面的评论中可以看出,您似乎希望一次触发多个elseifcase语句。在这种情况下,一系列的elseifs或case都不能工作。只需将所有elseif语句替换为单独的、独立的if语句,而不需要任何elseif语句。请注意,现在任何if语句都可以触发,包括您不打算触发的语句。所以你必须仔细观察每一种情况。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22283393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档