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: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!
|
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/ |