------------------ part_a ex7 fplot t = 1790:2000; div= 1 + exp(-0.0313*(t -1913.25)); P = 197273000./div; plot(t,P) xlabel('Ano'), ylabel('População') P2020 = 197273000/ (1 + exp(-0.0313*(2020 -1913.25))) ------------------- part_a ex9 indices Z = [2 7 9 7 ; 3 1 5 6 ; 8 1 2 5] A = Z(:,2:2:end) B = Z(1:2:end,:) C = Z' D = 1./Z %[rats(d)] E = sqrt(Z) ------------------- part_a ex10 input clc; %limpa a linha de comandos clear all; %apaga todas as variáveis do espaço de trabalho close all; %fecha todas as figuras a3 = input('Introduzao coeficientede x^3: '); a2 = input('Introduzao coeficientede x^2: '); a1 = input('Introduzao coeficientede x^1: '); a0 = input('Introduzao coeficientede x^0: '); pol= [a3 a2 a1 a0]; raizes= roots(pol); disp('As raizes do polinomio sao: '); disp(raizes); ------------------- part_b ex1 fn sigmoide function y = sigmoide(x,K) % % A função SIGMOIDE calcula a relação % entrada-saída da função y = 1 / (1+ e^(-K*x)). % % Chamada: y = sigmoide(x,K), em que K é um escalar % e x pode ser um escalar ou um array uni-dimensional [linhas_K, colunas_K] = size(K); [linhas_x, colunas_x] = size(x); if (linhas_x> 1 && colunas_x> 1) error('x tem que se um array uni-dimensional.') elseif ~(linhas_K== 1 && colunas_K== 1) error('K tem que ser um escalar.') end y =1./(1 + exp(-K*x)); ----- %Este script testa a função SIGMOIDE clc; clear all; close all; disp('Este script testa a função SIGMOIDE'); %pede o valor de x e testa o valor x_incorrecto= true; while (x_incorrecto) entrada_x= ... input('Introduza um escalar ou array uni-dimens. x [e.g.: [-5:0.01:5]]: '); [linhas_entrada_x, colunas_entrada_x] = size(entrada_x); x_incorrecto= (linhas_entrada_x> 1 && colunas_entrada_x> 1); end %pede 3 valores de K e testa os seus valores K_incorrecto= true; while(K_incorrecto) entrada_K_1 = input('Introduza um escalar K_1 [e.g.: 1]: '); entrada_K_2 = input('Introduza um escalar K_2 [e.g.: 10]: '); entrada_K_3 = input('Introduza um escalar K_3 [e.g.: 100]: '); entrada_K= [entrada_K_1, entrada_K_2, entrada_K_3]; [linhas_entrada_K, colunas_entrada_K] = size(entrada_K); K_incorrecto= (linhas_entrada_K~=1 ||colunas_entrada_K~= 3); end figure(100), hold on; for j=1:3, subplot(3,1,j), plot(entrada_x, sigmoide(entrada_x, entrada_K(j))); title(['K_', int2str(j), ' = ', int2str(entrada_K(j))]), grid on; end ------------------- part_c ex1 ordena strings function [celOrd] = ordenaStrings(cel) %Comentários ... help!! %Testes à estrutura de entrada if class(cel)~='cell', error('O argumento não é um cell array'); end; [linhas_cel, colunas_cel] = size(cel); if (linhas_cel> 1 && colunas_cel> 1) error('O cellarray deve ser um vector!'); end if (linhas_cel== 0 || colunas_cel== 0) error('O cellarray deve ser não-vazio!'); end for k=1:length(cel) if(strcmp(class(cel{k}), 'char')~=true) error('Todos os elementos do cellarray devem ser um array de chars!'); end end %Ordenação [celOrd_aux, indices] = sort(lower(cel)); for k=1:length(cel) celOrd{k}=cel{indices(k)}; end ----- % script_ex_1.m % Testa ordenaStrings() clc; % Introduza o número de strings a ordenar nstr= input('Introduza o número de strings a ordenar: '); % Pré-alocação de células celula= cell(1,nstr); %opcional for k = 1:nstr string= ['Introduza a string nº' int2str(k) ': ']; celula{k}= input(string,'s'); end % Ordena string stringsOrdenadas= ordenaStrings(celula); % Apresenta os resultados fprintf('\nStringsordenadas:\n'); for k = 1:nstr fprintf('%s\n', stringsOrdenadas{k}); end ------------------- part_c ex4 procura CDs function celula= procuraCDs(coleccaoCDs, anoAprocurar) % comentários ... celula= {}; indice= 1; for k = 1:length(coleccaoCDs) umCD= coleccaoCDs{k}; if umCD.ano>= anoAprocurar celula{indice} = umCD.titulo; indice= indice+ 1; end end ----- % script_ex_4.m % Testa procuraCDs() clear all; clc; close all; % Carrega o cellarray composto por estruturas load OsMeusCDs.mat % Pede ano e faz a procura var_ano= input('Introduzao ano a partir do qual quer os resultados: '); res= procuraCDs(OsMeusCDs, var_ano); % Apresenta o resultado disp(['Titulo dos CDs gravados desde o ano ' int2str(var_ano) ': ']); disp(res);