octave
Octave – Sistema de transferência Malha fechada

No vídeo anterior, apresentamos uma pequena apresentação de um sistema de malha aberta.

Agora iremos apresentar um exemplo de malha fechada.

Conforme o wiki:

“Também chamado de controle retroativo (realimentação ou feedback) necessita de informações da saída do controlador através de elementos sensores ou transdutores, compara o sinal da saída com o set-point(referência) e corrige a saída caso a mesma esteja desviando-se dos parâmetros programados.”

O vídeo de treinamento deste material pode ser visto aqui.

Primeiramente, temos que carregar a função control, através do comando:

 pkg load control

Em seguida criamos o num01 e den01, da planta.

Em seguida criamos o num02 e den02 da função de controle.

Por fim atribuimos a função de feedback, através da união de ambas as funções:

sys01= feedback(tf01,tf02);

Lembrando que a função feedback , aceita mais um parâmetro, que é o sinal de realimentação.

“Se sign for omitido ou definido como +1, indica que o sinal de realimentação é positivo (realimentação negativa). Se sign for definido como -1, indica realimentação positiva.”

%Apresentação do sistema de malha fechada

pkg load control

%Sistema de transferencia da planta.
num01 = [1];
den01 = [1,2,10];

%tf01 - Sistema da Planta
%tf01=tf([1],[1,2,10])
tf01=tf(num01,den01);

num02=[2];
den02=[1];
% Função de controle
tf02=tf(num02,den02);

% Construir o sistema de malha fechada
sys01= feedback(tf01,tf02);

disp(sys01);

step(sys01);

xlabel('tempo');
ylabel('saida v');
title('Sistema malha fechada');

Resultado da função de malha fechada

octave
Octave – Função de transferência

Pelo wiki: “Função de transferência é a representação matemática da relação entre a entrada e a saída de um sistema físico.”

Desta forma podemos simular equipamentos físicos através de funções matemáticas, simulando seus resultados.

De forma geral existem 2 tipo de simulação.

Sistema Malha Abertos – São sistemas que apresentam apenas uma entrada – > Com sua respectiva saída.

Já um sistema de malha fechada, possui feedback, sendo definido pela wiki como:

“Também chamado de controle retroativo (realimentação ou feedback) necessita de informações da saída do controlador através de elementos sensores ou transdutores, compara o sinal da saída com o set-point(referência) e corrige a saída caso a mesma esteja desviando-se dos parâmetros programados.”

Entendendo como funciona o sistema de malha aberta no OCTAVE:

Para entender o sistema de malha aberta , com uso da função de transferência, montei este vídeo para voces.

Podemos inicialmente verificar, que faz-se necessário o uso da lib control, pois o octave precisa desta lib para utilizar o sistema de transferencia.

Para isso usamos o comando:

pkg load control

Em seguida precisamos criar a função de transferência atribuindo o numerador num01 e denominador den01. Em criando a função de transferência, que será utilizada para injetar os valores de entrada.

Logo atribuimos a função tf(num,den) criando a variavel S01, que armazena a função de transferencia.

Agora por fim, atuaremos passando os valores de entrada, através do t, e plotando no gráfico, conforme a função step.

O resultado final fica conforme apresentado a seguir:

% Carrega o pacote da função de transferencia.
pkg load control

%      1
%  -------------
%   S^2 +2S + 10

% num01
% den01

%num01= [0,0,1];
num01 = [1];

den01= [1,2,10];

% Cria a funçao de transferencia
S01= tf(num01,den01);

disp(S01);

%Atribui um vetor de tempo
t= 0:0.1:10;



%Resposta ao degrau da função de transferencia
step(S01,t);

xlabel('Tempo');
ylabel('Saida (v)');
title('Resposta da Função de transferencia');
octave
Octave – Primeiro contato

Comentário

o Comentário é o % seguido do texto.

Conforme o exemplo:

% Isso é um comentário

Declaração de variável

x = 14;
resultado = x + 2;
resultado2 = x ^2 ;
resultado3 = (x ^2)/ (x*2)

As variáveis podem ser declaradas livremente no octave, conforme apresentado no código acima.

Trabalhando com vetor

Trabalhar com vetor é tão simples como manipular variáveis, para isso, basta declarar os elementos entre chaves [ ]

vt = [10,20,30]

resultado4 = vt*2;

vt2 = [1,2,3]
resultado5 = vt + vt2;

resultado6 = vt .* vt2;
disp(resultado6);
printf("O Resultado: %d",resultado6);

Podemos ver, no exemplo acima, que temos a variável vt, que tem 3 elementos, 10,20 e 30, armazenados.

Desta forma sempre que falarmos em vt, estaremos trabalhando com os valores [10,20,30]. Até que este seja modificado.

Ao declarar resultado4, fazemos a operação matemática de multiplicação por 2, ficando [20,40,60 como resultado na variável resultado4.

Comparando valores

Agora iremos usar o valor armazenado na variável para tomar uma decisão. Para isso usamos o comando if, conforme nosso exemplo.

x = 14;

printf("\n\n");
if (x == 12)
  printf("O valor bateu\n");
else
  printf("O valor nao bateu\n");
end;

printf("\n\n");
if (x < 12)
  printf("O valor é menor que 12\n");
else
  printf("O valor é maior ou igual a 12\n");
end;

Neste exemplo testamos o valor de x, verificando se este atende a condição onde == é valor igual ao definido, < (menor que o definido).

Atendendo o primeiro print será mostrado. Caso contrário, ele mostrará o print atribuído após o else.

O Else pode ser omitido, não tendo então exceção. Apenas condição de atendimento ao teste if.

octave
Octave – Criando gráficos do segundo grau

Iremo hoje, usar o octave para definir e criar gráficos do segundo grau.

Para isso iremos utilizar o exemplo abaixo:

% Gerar gráfico de Função do Segundo Grau

% X^2 + 2X + 10
% 2X^2 +2X^1 + 10X^0

x = -10:0.1:10;
y = 2*x.^2 - 5*x - 100;
plot(x, y);
xlabel('x');
ylabel('f(x)');
title('Gráfico da função f(x) = x^2 + 2x + 10');
grid on;

Em gráficos do segundo grau, temos os valores de Y em função do X, sendo assim primeiramente atribuimos o x. O X recebe uma faixa de valores, ou seja, valores que serão apresentados ao Y, começando do -10 até o valor 10, pulando de 0.1 em 0.1.

Para isso usamos a seguinte sintaxe:

x = valor_inicial: pulo : valor_final

Onde:

  • valor_inicial é o primeiro valor a ser atribuido a X, no nosso caso -10;
  • pulo é o valor que será acrescido de contagem a contagem até chegar ao valor final, exemplo: -10.0, -9.99, -9.98, 9.98…,9.98, 9.99, 10.00 , no nosso caso o pulo será 0.1.
  • valor _final é o valor que se quer chegar para terminar a contagem, no nosso caso 10

IA Python
Biblioteca Spacy para Python

Spacy é uma biblioteca de processamento de linguagem natural, desenvolvida para auxiliar na analise e identificação do contexto de textos.

Ela pode ser utilizada, quando há necessidade de entender o que foi escrito.

A lib é mantida pelo site:

https://spacy.io/

Muito utilizada em NLP (Natural Linguage Process) Processamento de Linguagem Natural.

A biblioteca tenta analisar texto, sobre os aspectos de sua estrutura morfológica e sintática.

Identificando o sujeito da frase, os verbos e etc. Traçando também uma relação de dependência entre as diversas partes.

Todos os exemplos aqui descritos, estão em meu repositório:

Github

https://github.com/marcelomaurin/ExSpacy

Instalação do Spacy

Estarei usando o python 3, e o procedimento de instalação é relativamente simples.

Instalando a biblioteca

pip3 install spacy

No nosso repositório na pasta src/install, inclui um script ./install.sh que automatiza a instalação.

Porem considero que o usuário tenha instalado o python 3 previamente.

Para rodar o procedimento de instalação rode:

> /src/install/install.sh

Modelos

Modelos são treinados para reconhecer aspectos de diversos idiomas, tais como o portugues.

Existem diversos modelos em diversos idiomas, voce pode escolher o modelo que deseja instalar através do link:

https://spacy.io/models

Os modelos em português não destoam do português Brasil, pois as regras ortográficas são as mesmas em qualquer pais com a língua.

Ao rodar nosso install o padrão do modelo com melhor acurácia, já será instalado automáticamente.

Primeiro Exemplo

Agora iremos colocar a mão na massa!

Neste primeiro modelo, apresentamos um texto e analisamos o mesmo de forma sintática.

Esterei apresentando o Ex01 do nosso git:

import spacy

nlp = spacy.load("pt_core_news_lg")
import pt_core_news_lg

nlp = pt_core_news_lg.load()

doc = nlp("O Marcelo pegou COVID-19 em setembro de 2019, porem não teve problemas com isso")

for token in doc:
    print("Token:"+token.text)
    print("Pos:"+token.pos_)

Nele importamos a lib spacy, e em seguida carregamos a rede treinada pt_core_news_lg. Após isso identificamos o texto alvo através da variável doc.

E em seguida mostramos alguns resultados tokenizados.

O POS faz a analise do que significa o token.

Maior informação sobre a morfologia aplicada ao spacy pode ser vista no link abaixo:

https://spacy.io/api/morphologizer

Pudemos ver neste artigo os primeiros fundamentos da lib spaCy, espero que tenham gostado.

Java
Criando um projeto WS JSON Java/Spring – Parte 2

Neste artigo irei explanar como criar um projeto de Servidor Json Java Spring.

O objetivo deste artigo, é documentar os passos necessários que eu utilizei para fazer.

Sou novo neste negócio, por isso, tudo o que desenvolvo, acabo documentando para tentar mapear, e posteriormente não perder.

Talvez não sirva para você.Porem como os passos sempre são semelhantes, a maior chance, é que minhas dificuldades enfrentadas tambem sejam as suas.]

Boa Sorte!

Configurando o Intellij

Configurando o pom.xml

Entre no seu projeto, e configure o arquivo pom.xml. Irei apresentar um modelo, que peço que se baseia, porem dependendo das características do seu projeto, este pode mudas.

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.1.0</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.comlink</groupId>
    <artifactId>SacDigital</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>19</maven.compiler.source>
        <maven.compiler.target>19</maven.compiler.target>
        <spring-boot.version>2.5.3</spring-boot.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

Não copie o fonte, verifiqueas dependency, plugin, parent, properties.

Criando servico em porta especifica

Em resources, crie o arquivo application.properties,

server.port=8081

Criando Perfil de application

Vá em resources , crie um novo file:

  • application-development.properties
  • application-production.properties

Em application.properties, inclua a seguinte diretiva

spring.profiles.active=development

Tanto no development como production,inclua os seguintes códigos:

spring.application.name=Servidor de SACDigital Producao
server.port=8088

Na classe onde usa spring, verifique se possui os seguintes imports.

import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;

Por fim, o código pode ser visto no seguinte GITHUB:

https://github.com/marcelomaurin/MOCKSD

Exemplo de teste de conexão:

Java
Criando um projeto WS JSON Java/Spring – Parte 1

Neste artigo irei explanar como criar um projeto de Servidor Json Java Spring.

O objetivo deste artigo, é documentar os passos necessários que eu utilizei para fazer.

Sou novo neste negócio, por isso, tudo o que desenvolvo, acabo documentando para tentar mapear, e posteriormente não perder.

Talvez não sirva para você.Porem como os passos sempre são semelhantes, a maior chance, é que minhas dificuldades enfrentadas tambem sejam as suas.]

Boa Sorte!

Configurando ambiente

Estou usando como IDE IntelliJ IDEA 2022.

Então todas as informações serão direcionadas a esta Versão.

Instalando o Marvin

Entre no link abaixo, e baixe o Marvin

https://maven.apache.org/download.cgi

Copie o mesmo para a pasta c:

Configurando Ambiente de desenvolvimento

Entre nas váriaveis de ambiente, eu costumo fazer no sistema, e não no usuário.

Crie as seguintes variaveis:

MAVEN_HOME - C:\apache-maven-3.9.2

Lembre-se que o caminho depende da sua versão.

Agora edite o PATH e inclua o caminho do binário:

Lembre-se que o caminho é o bin dentro da pasta apache-maven.

Teste

Por fim, para testar, digite CMD

E digite:

mvn -v

Desta forma voce verá que o caminho entrou.

pt_BRPortuguese