【问题标题】:Multiple if condition in MatlabMatlab中的多个if条件
【发布时间】:2016-09-18 22:59:37
【问题描述】:

我对以下陈述有疑问。当我运行代码时,它没有进入所需的条件,也没有进行应有的转换。任何我无法发现的错误?提前致谢。

clear all;
clc;
recenica=('STEFI');
i=1;
dolzina = length(recenica)

while i<=length(dolzina)
prva=recenica(i);
vtora=recenica(i+1);


if recenica(i)==('P' | 'M' | ' ')
    prva='B';
end
if recenica(i)==('U')
    prva='O';
end
if recenica(i)==('V')
    prva='F';
end

if recenica(i)==('G' | 'X' | 'Y' | 'J' | 'I')
    prva='K';
end

if recenica(i)==('L' | 'T' | 'D' | '3' | '2')
    prva='N';
end

if recenica(i)==('Z' | '1' | 'C')
    prva='S';
end

if recenica(i)==('5' | 'Q' | '4')
    prva='6';
end

if recenica(i)==('R')
    prva='H';
end


if recenica(i+1)==('P' | 'M' | ' ')
    vtora='B';
end
if recenica(i+1)==('U')
    vtora='O';
end
if recenica(i+1)==('V')
    vtora='F';
end

if recenica(i+1)==('G' | 'X' | 'Y' | 'J' | 'I')
    vtora='K';
end

if recenica(i+1)==('L' | 'T' | 'D' | '3' | '2')
    vtora='N';
end

if recenica(i+1)==('Z' | '1' | 'C')
    vtora='S';
end

if recenica(i+1)==('5' | 'Q' | '4')
    vtora='6';
end

if recenica(i+1)==('R')
    vtora='H';
end


a=strcat(prva,'.jpg');
b=strcat(vtora,'.jpg');

generiranje=Test3(a,b);
i=i+1;
end

【问题讨论】:

  • 亲爱的 OP,“它没有进入所需的条件,也没有进行应有的转换。有什么我无法发现的错误吗?”听起来非常模糊,并且没有提供足够的信息来回答您的问题。请考虑阅读文章stackoverflow.com/help/how-to-ask 并相应地编辑您的问题
  • 逻辑或 | 已矢量化。这意味着它将比较向量而不是 MATLAB 中的位。要比较位,请使用bitor

标签: matlab if-statement


【解决方案1】:

您的 MATLAB IF 语法看起来很奇怪:

你的意思是

if recenica(i)==('P' | 'M' | ' ')

代码:

if (recenica(i)=='P') || (recenica(i)=='M') || (recenica(i)==' ')

您可能还想使用 switch/case 结构:

类似:

 switch recenica(i)
    case {'P','M', ' '}

 end

【讨论】:

  • 您也可以使用ismember,这将给出这个条件:ismember(recencia(i), {'P', 'M', ' '})。在这种情况下,我更喜欢使用开关。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-20
  • 2015-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多