Fórum de Matemática
DÚVIDAS? Nós respondemos!

Um Fórum em Português dedicado à Matemática
Data/Hora: 28 mar 2024, 19:12

Os Horários são TMG [ DST ]




Fazer Nova Pergunta Responder a este Tópico  [ 6 mensagens ] 
Autor Mensagem
MensagemEnviado: 30 jan 2019, 18:35 
Offline

Registado: 10 nov 2017, 20:10
Mensagens: 61
Localização: lisboa
Agradeceu: 23 vezes
Foi agradecido: 2 vezes
Boa tarde,

Alguém me pode ajudar neste exercício matlab? É a alinea B.

function [i120, m120]= func11(mat)

i120 = 0;

m120 = 0;

for i = 1:size(mat,1)

A partir daqui já não consigo acabar o código pois não estou a ver como é que consigo implementar a função anterior.. Alguém me pode dar uma ajuda,por favor?

Thanks!


Anexos:
duvida matlab.PNG
duvida matlab.PNG [ 120.83 KiB | Visualizado 4325 vezes ]
Topo
 Perfil  
 
MensagemEnviado: 30 jan 2019, 18:36 
Offline

Registado: 10 nov 2017, 20:10
Mensagens: 61
Localização: lisboa
Agradeceu: 23 vezes
Foi agradecido: 2 vezes
aluno20000 Escreveu:
Boa tarde,

Alguém me pode ajudar neste exercício matlab? É a alinea B.

function [i120, m120]= func11(mat)

i120 = 0;

m120 = 0;

for i = 1:size(mat,1)

A partir daqui já não consigo acabar o código pois não estou a ver como é que consigo implementar a função anterior.. Alguém me pode dar uma ajuda,por favor?

Thanks!


Anexos:
matlab duvida exercicio.PNG
matlab duvida exercicio.PNG [ 214.96 KiB | Visualizado 4323 vezes ]
Topo
 Perfil  
 
MensagemEnviado: 31 jan 2019, 18:31 
Offline

Registado: 14 dez 2011, 15:59
Mensagens: 897
Localização: Portugal
Agradeceu: 20 vezes
Foi agradecido: 373 vezes
Já estou um pouco destreinado em Matlab mas o seguinte código funciona:

% [ i120, m120] = func11( mat )
% Entrada: mat é uma matriz de inteiros
% Saída: i120 é o nº de elementos da matriz com valor igual a 120
% m120 é o nº de elementos da matriz com valor maior do que 120
function [ i120, m120 ] = func11( mat )
i120 = 0;
m120 = 0;
[L,C] = size(mat);
for i=1:L
[a,b] = func10(mat(i,:),120);
i120 = i120 + a;
m120 = m120 + b;
end

Isto não significa que não possam existir maneiras mais eficientes ou com melhores prácticas de resolver o problema.


Topo
 Perfil  
 
MensagemEnviado: 01 fev 2019, 11:37 
Offline

Registado: 10 nov 2017, 20:10
Mensagens: 61
Localização: lisboa
Agradeceu: 23 vezes
Foi agradecido: 2 vezes
Rui Carpentier Escreveu:
Já estou um pouco destreinado em Matlab mas o seguinte código funciona:

% [ i120, m120] = func11( mat )
% Entrada: mat é uma matriz de inteiros
% Saída: i120 é o nº de elementos da matriz com valor igual a 120
% m120 é o nº de elementos da matriz com valor maior do que 120
function [ i120, m120 ] = func11( mat )
i120 = 0;
m120 = 0;
[L,C] = size(mat);
for i=1:L
[a,b] = func10(mat(i,:),120);
i120 = i120 + a;
m120 = m120 + b;
end

Isto não significa que não possam existir maneiras mais eficientes ou com melhores prácticas de resolver o problema.


Obrigado pela resposta.
No entanto não percebi porque é que:
[L,C] = size(mat) (acho que seria L = size(mat))
i120 = i120 + a (acho que seria i120 = i120 + 1)
m120 = m120 + b; (acho que seria m120 = m120 +1)
Caso me pudesse explicar porque o que fiz está errado, agradecia imenso


Topo
 Perfil  
 
MensagemEnviado: 02 fev 2019, 14:49 
Offline

Registado: 14 dez 2011, 15:59
Mensagens: 897
Localização: Portugal
Agradeceu: 20 vezes
Foi agradecido: 373 vezes
Citar:
[L,C] = size(mat) (acho que seria L = size(mat))

size(mat) dá um vetor com duas entradas, a primeira é o nº de linhas da matriz mat, a segunda é o número de colunas. Uma outra hipótese seria L=size(mat,1) que é equivalente a dar a primeira entrada de size(mat).
Citar:
i120 = i120 + a (acho que seria i120 = i120 + 1)
m120 = m120 + b; (acho que seria m120 = m120 +1)

Note que já temos uma função func10 que determina o número de elementos que são iguais a 120 (a) e o número de elementos que são superiores a 120 (b) para uma dada linha de mat (quando a função recebe como argumentos essa linha e o nº 120: [a,b]=func10(mat(i,:),120)). Assim sendo, para determinar i120 (o nº de entradas da matriz mat iguais a 120) e m120 (o nº de entradas da matriz mat maiores que 120), só precisamos de somar os a's e os b's de todas as linhas de mat. Daí o ciclo:
for i=1:L
[a,b] = func10(mat(i,:),120);
i120 = i120 + a;
m120 = m120 + b;
end

que equivale a [i120, m120] = func10(mat(1,:),120) + func10(mat(2,:),120) + ... + func10(mat(L,:),120).


Topo
 Perfil  
 
MensagemEnviado: 02 fev 2019, 17:17 
Offline

Registado: 10 nov 2017, 20:10
Mensagens: 61
Localização: lisboa
Agradeceu: 23 vezes
Foi agradecido: 2 vezes
Rui Carpentier Escreveu:
Citar:
[L,C] = size(mat) (acho que seria L = size(mat))

size(mat) dá um vetor com duas entradas, a primeira é o nº de linhas da matriz mat, a segunda é o número de colunas. Uma outra hipótese seria L=size(mat,1) que é equivalente a dar a primeira entrada de size(mat).
Citar:
i120 = i120 + a (acho que seria i120 = i120 + 1)
m120 = m120 + b; (acho que seria m120 = m120 +1)

Note que já temos uma função func10 que determina o número de elementos que são iguais a 120 (a) e o número de elementos que são superiores a 120 (b) para uma dada linha de mat (quando a função recebe como argumentos essa linha e o nº 120: [a,b]=func10(mat(i,:),120)). Assim sendo, para determinar i120 (o nº de entradas da matriz mat iguais a 120) e m120 (o nº de entradas da matriz mat maiores que 120), só precisamos de somar os a's e os b's de todas as linhas de mat. Daí o ciclo:
for i=1:L
[a,b] = func10(mat(i,:),120);
i120 = i120 + a;
m120 = m120 + b;
end

que equivale a [i120, m120] = func10(mat(1,:),120) + func10(mat(2,:),120) + ... + func10(mat(L,:),120).


Já percebi! Muito obrigado pela ajuda!
Em relação à minha primeira dúvida, enganei-me a escrever: queria dizer L=size(mat,1) ,que foi como eu tinha feito inicialmente.


Topo
 Perfil  
 
Mostrar mensagens anteriores:  Ordenar por  
Fazer Nova Pergunta Responder a este Tópico  [ 6 mensagens ] 

Os Horários são TMG [ DST ]


Quem está ligado:

Utilizadores a ver este Fórum: Nenhum utilizador registado e 13 visitantes


Criar perguntas: Proibído
Responder a perguntas: Proibído
Editar Mensagens: Proibído
Apagar Mensagens: Proibído
Enviar anexos: Proibído

Pesquisar por:
Ir para:  
cron