Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
fgmarquesc

Matlab_Nova_duvida

Recommended Posts

fgmarquesc

Bons dias a todos.

Gostaria que alguém me ajudasse no seguinte:

Eu pretendo criar uma matriz que apresente alternadamente o seguinte: m,0,0,m,0,0,m,0,0,m...,m,0,0,m, em que estes valores de m são todos iguais.

O que eu fiz foi:

K=diag([m,0,0])

Mas queria repetir este processo na diagonal inúmeras vezes, tantas quanto for o valor n.

Passo a explicar melhor:

Se tiver 7 elementos, quero que a diagonal que escrevi em cima se repita 7 vezes, ou seja: K=diag([m,0,0,m,0,0,m]). No entanto, se tiver por exemplo, 30 elementos como posso dizer ao programa para repetir 30 vezes??

O que eu fiz foi:

dim=30

K=diag([m,0,0],dim)

No entanto não tou a conseguir obter o que pretendo.

Obrigados

Share this post


Link to post
Share on other sites
pedrosorio

K = diag(m*(abs(sin((0:n-1)*pi/3))<0.01));

Código "à artista" para fazer isso  :D

sin((0:n-1)*pi/3) gera-te um vector com 'n' valores da função seno calculados começando em 0, com intervalos de pi/3. Isto vai gerar-te um vector em que tens zeros nas posições 3k+1, k inteiro (i.e. 1,4,7,10,etc.).

Como o matlab faz isto à la software numérico, na realidade ficas com valores próximos de zero mas que não são exactamente zero, portanto fazemos (abs(sin((0:n-1)*pi/3))<0.01) para obter um vector que tem 1's em todas as posições acima referidas, e zero nas restantes. Multiplicamos isso por 'm' e usas a função diag nesse vector, et voilà.


Não respondo a dúvidas por mensagem.

Share this post


Link to post
Share on other sites
fgmarquesc

Obrigado Pedro.

Ainda sou um bocadinho burrito nisto...mas vou aprender.

Mais uma vez obrigado.

Cumprimentos

FC

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.