30 jan 2019, 18:35
30 jan 2019, 18:36
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!
31 jan 2019, 18:31
01 fev 2019, 11:37
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.
02 fev 2019, 14:49
[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)
02 fev 2019, 17:17
Rui Carpentier Escreveu:[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).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).