matlab não pode dividir usando /
-
28-10-2019 - |
Pergunta
Tenho uma função simples que leva um valor
Este valor é marcado em uma série de instruções if ou elseif para calcular outro valor.
O problema é que parece encontrar um erro ao tentar executar que diz
Erro ao usar / As dimensões da matriz devem concordar.
Erro em abc (linha 9) a= 5000 / g;
o código é o seguinte
function abc(g)
if (g == 100)
a = 1;
elseif (g <= 99 & g >= 50)
a = 200 -2*g;
elseif (g <= 50 & g >= 1)
a = 5000 / g;
else
warning('Invalid value passed, a defaults to 1');
a =1;
end
end
Então, estou passando abc 100 e espero que a seja 1, mas em vez disso, ele passa por cada if / elseif e gera um erro em a= 5000 / g
Também devo mencionar que inicialmente tentei usar && nos elseifs, mas isso também deu um erro que dizia
Operandos para o ||e os operadores && devem ser conversíveis em valores escalares lógicos.
Erro em abc (linha 6) elseif (g <= 99 && g>= 50)
Alguém tem ideia do que está acontecendo aqui? Obrigado
Solução
Você provavelmente está passando uma matriz para sua função, por exemplo, quando você liga
abc(yourdata)
yourdata
na verdade não é um número, mas uma matriz. Se você ligou diretamente
abc(100)
você não deve ver o seu problema (ou vê?).
Em outras palavras, seu principal problema não está dentro da sua função , mas quando você a chama!
Dada a sua descrição, parece que você definiu yourdata(1)
com o valor 100 que deseja testar, mas algum outro elemento da matriz tem um valor diferente, razão pela qual a construção if
se ramifica para o caso else. Lá, você precisa ./
em vez de /
se quiser fazer a divisão por elemento em vez de divisão de matriz .
Mas, na verdade, você provavelmente só precisa ter certeza de que yourdata
é escalar ao chamar sua função.