Fórum de Matemática | DÚVIDAS? Nós respondemos!
https://forumdematematica.org/

programacao matlab com matrizes - implementação da função anterior
https://forumdematematica.org/viewtopic.php?f=12&t=14108
Página 1 de 1

Autor:  aluno20000 [ 30 jan 2019, 18:35 ]
Título da Pergunta:  programacao matlab com matrizes - implementação da função anterior

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 4648 vezes ]

Autor:  aluno20000 [ 30 jan 2019, 18:36 ]
Título da Pergunta:  Re: programacao matlab com matrizes - implementação da função anterior

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 4646 vezes ]

Autor:  Rui Carpentier [ 31 jan 2019, 18:31 ]
Título da Pergunta:  Re: programacao matlab com matrizes - implementação da função anterior

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.

Autor:  aluno20000 [ 01 fev 2019, 11:37 ]
Título da Pergunta:  Re: programacao matlab com matrizes - implementação da função anterior

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

Autor:  Rui Carpentier [ 02 fev 2019, 14:49 ]
Título da Pergunta:  Re: programacao matlab com matrizes - implementação da função anterior  [resolvida]

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).

Autor:  aluno20000 [ 02 fev 2019, 17:17 ]
Título da Pergunta:  Re: programacao matlab com matrizes - implementação da função anterior

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.

Página 1 de 1 Os Horários são TMG [ DST ]
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/