Entrar e salvar arquivos de dados
Teoria
Introdução
E aí, pessoal! Na aula passada, vimos algumas formas de entrar dados no MATLAB, usando a função input() e digitando os valores no Command Window. Mas digamos que você tenha feito algum experimento cujas medições foram armazenadas em um arquivo de bloco de notas ou Excel, com centenas e centenas de dados, e queira transferi-los para o MATLAB para analisá-los. “SOCORRO!”, você deve estar pensando, “isso quer dizer que vou ter que entrar no MATLAB um dado por vez e criar centenas e centenas de variáveis?”
Fique tranquilo, meu jovem gafanhoto. O MATLAB tem funções para entrar com dados de arquivos externos que permitem fazer isso em uma única linha de código ;D Nessa aula, vamos ver como carregar dados de arquivos de texto, com terminação .txt, e de planilhas Excel. E de quebra, vamos aprender como salvar nossos resultados em arquivos .txt. Partiu?
Carregar e salvar arquivos .txt
Conseguimos entrar com dados salvos em um arquivo de texto com terminação .txt com apenas uma linha de código, usando a função load('Nome do arquivo'). Para vermos como ela funciona, vamos fazer um exemplo. Vamos criar um script novo e salvá-lo como teste_txt_matlab.m em nosso computador. Na mesma pasta onde o arquivo .m foi salvo, temos um arquivo de texto chamado dados.txt, que contém uma matriz 4 x 3:
Para entrar com a matriz no MATLAB, escrevemos o comando no editor:
load('dados.txt')
A função load() lê os dados do arquivo de texto linha por linha. Os valores do arquivo de texto devem estar separados por espaços ou vírgulas, e o número de colunas de dados em cada linha deve ser o mesmo. Note que nosso arquivo dados.txt tem essas características.
Uma característica legal da função load() é que ela armazena os valores do arquivo .txt em uma variável com nome do arquivo, sem a terminação .txt. Por exemplo, se acrescentarmos o comando display(dados), que manda o MATLAB mostrar a variável dados, e rodarmos o programa, a matriz 4 x 3 do arquivo dados.txt aparece no Command Window:
Note que foi criada uma variável chamada “dados” em nosso Workspace. Essa variável contém a matriz do arquivo de texto dados.txt. Bem prático, né?
Podemos também fazer operações com nossa matriz, usando o que aprendemos na seção de vetores e matrizes. Por exemplo, posso multiplicá-la por 2 e armazenar o resultado em outra variável, que chamei de dados2. O print abaixo mostra o resultado:
Se quisermos, podemos salvar o resultado em um arquivo de texto também. Para isso, usamos o comando:
save('Nome do arquivo','variável','-ascii')
A string '-ascii' indica que os dados serão salvos em um arquivo de texto. Aplicando no nosso exemplo, para salvar a matriz dados2 em um arquivo .txt, acrescentamos em nosso programinha a linha de código:
save('dados_salvos.txt','dados2','-ascii')
O arquivo dados_salvos.txt ficará salvo na mesma pasta onde está o arquivo teste_txt_matlab.m. Caso queira salvar esse arquivo em algum outro lugar, no campo 'Nome do arquivo' você deve incluir o diretório completo, por exemplo:
save(' D:\Documents\dados_salvos.txt','dados2','-ascii')
No final, nosso programinha ficou assim:
Legal, né? Agora, bora ver como faz para entrar com dados de planilhas do Excel!
Carregar dados de planilhas Excel
O MATLAB pode ler planilhas de Excel usando o seguinte comando:
[X,Y] = xlsread('Nome do arquivo')
A matriz X vai armazenar as linhas e as colunas com dados numéricos da planilha e Y será uma matriz de células contendo os textos dos cabeçalhos. Para entendermos bem como funciona, vamos de exemplo! Vamos criar um novo script e salvá-lo como excel_matlab.m em nosso computador. Na mesma pasta, temos uma planilha chamada tensao_desloc.xlsx com a seguinte informação:
No arquivo excel_matlab.m, vamos entrar com o código:
[X,Y] = xlsread('tensao_desloc.xlsx')
display(X)
display(Y)
Na primeira linha, pedimos que o MATLAB leia o conteúdo da planilha do arquivo 'tensao_desloc.xlsx'. Nas segunda e terceira linhas, pedimos para o MATLAB nos mostrar no Command Window a matriz X e a matriz de células Y. Rodando nosso programinha, temos este resultado:
Perceba que a matriz X contém os valores numéricos da planilha Excel e que a matriz de células Y é uma matriz 3 x 2, contedo as 3 linhas de texto do cabeçalho. O elemento {0×0 char} de Y é um elemento vazio pois, na planilha Excel, a célula ao lado do título “Linearidade do transdutor” estava vazia.
Um detalhezinho: a função xlsread() funciona tanto para arquivos com terminação .xls quanto para arquivos com terminação .xlsx.
E aí? Curtiu aprender esses comandos novos? Não esqueça de praticar para fixar! Bora para os exercícios ;D
***Exemplos adaptados do livro:
“An Engineer’s Guide to MATLAB: With Applications from Mechanical, Aerospace, Electrical, Civil, and Biological Systems Engineering” (3ª edição), escrito por Edward B. Magrab, Shapour Azarm, Balakumar Balachandran, James H. Duncan, Keith E. Herold e Gregory C. Walsh.
Exercícios Resolvidos
Exercício Resolvido #1
“Autoria própria”
O U.S. Environmental Protection Agency (EPA) disponibiliza em seu site arquivos de texto com perfis de velocidade para medições padrão de consumo e emissões de veículos de passeio. Perfil de velocidade de um veículo é a velocidade que o carro deve ter, durante a medição, a cada segundo. O link abaixo contém um arquivo de texto, com terminação .txt, de um perfil de velocidade simulando um carro dirigido em uma autoestrada. A velocidade está em mph (milhas por hora).
https://www.epa.gov/sites/default/files/2015-10/hwycol.txt
Baixe o arquivo em formato .txt, carregue-o no MATLAB, e calcule a velocidade média.
Passo 1
A questão pede que façamos o download de um arquivo .txt que contém alguns valores de velocidade. Em seguida, devemos carregar o arquivo no MATLAB, para usarmos os valores de velocidade do arquivo de texto para calcular a velocidade média. Para isto, usaremos a função load().
Passo 2
A primeira coisa que vamos fazer é baixar o arquivo. Acessando o link, encontramos essa página:
Para baixar o arquivo .txt, clique com o botão direito para aparecer o menu abaixo:
Clique em “Salvar Como” e escolha uma pasta para salvar o arquivo.
Você pode também usar o comando “Ctrl + S” para salvar o arquivo.
Eu não alterei o nome do arquivo e ele ficou salvo como “hwycol.txt”. Você pode alterá-lo, se quiser.
Após baixar o arquivo, abra ele no Bloco de Notas:
Vemos que o arquivo .txt tem duas colunas: uma contendo o tempo e outra contendo a velocidade, em mph.
Lembra que o comando load() carrega arquivos .txt no MATLAB que contêm somente vetores ou matrizes? Por isso, temos que apagar as duas primeiras linhas do arquivo, para ficarmos somente com valores numéricos:
Pronto! Nosso arquivo agora tem uma matriz de duas colunas e 766 linhas. Agora é só salvar o arquivo e podemos ir para o próximo passo, que é carregar os dados no MATLAB 😊
Passo 3
Agora, crie um novo script no MATLAB e salve ele na mesma pasta onde você salvou o arquivo .txt. Eu chamei meu novo script de “Ex1.m”, mas você pode chamar como quiser.
Digite nesse novo script o seguinte comando:
load('hwycol.txt')
Nesse comando, pedimos ao MATLAB que carregue o arquivo de texto com nome “hwycol.txt”, que é o arquivo de texto que baixamos no site do EPA. Eu salvei no meu computador o arquivo de texto com esse nome, que é o mesmo que está no site. Caso você tenha salvado o arquivo de texto com outro nome, lembre de colocar na função load() o nome do seu arquivo.
Nosso script do MATLAB está assim, por enquanto:
Vamos rodar ele apertando o botão “Run”, destacado abaixo, ou usando a tecla F5 do nosso teclado:
Note que, após rodarmos o script, apareceu uma variável no nosso Workspace, chamada “hwycol”:
Essa variável contém a matriz 766 x 2 do arquivo “hwycol.txt”. Uma característica prática da função load() é que ele cria uma variável com o nome do arquivo de texto, sem a terminação .txt, para armazenar os dados do arquivo.
Vamos só dar uma olhadinha na variável hwycol, pra ver se nosso carregamento deu certo? Digite no Command Window o nome da variável e aperte Enter (lembrando que a sua variável pode ter um nome diferente da minha, dependendo do nome que você deu para seu arquivo .txt):
Podemos ver que os valores da matriz hwycol são os mesmos do arquivo “hwycol.txt”, deu tudo certo. Vamos passar para a próxima etapa do exercício, que é calcular a velocidade média.
Passo 4
Para encontrarmos a velocidade média, primeiro devemos criar um vetor contendo os valores de velocidade. Criamos esse vetor a partir da segunda coluna da matriz hwycol, usando a seguinte linha de código:
vel = hwycol(:,2);
Quando a gente quer pegar uma parte de uma matriz, a gente escreve o nome da variável que contém a matriz (hwycol) e à direita, entre parênteses, as linhas e colunas que queremos. Antes da vírgula indicamos as linhas e depois da vírgula, as colunas. O sinal de dois pontos “:” antes da vírgula significa que estamos selecionando todas as linhas da matriz e o número 2 significa que queremos apenas a coluna 2. Resumindo, estamos pegando toda a coluna de velocidades.
E essa linha de comando diz que a segunda coluna da matriz hwycol é armazenada na variável vel.
Então agora, temos um vetor de velocidades! E podemos encontrar a velocidade média usando a função mean(), por meio da linha de código:
media = mean(vel)
Nessa linha de código, pedimos ao MATLAB que calcule a média dos elementos do vetor vel e armazene a média na variável media.
Nosso script está assim agora:
Mandando o script rodar, temos o seguinte resultado no Command Window:
Logo, a velocidade média do perfil de velocidade do arquivo “hwycol.txt” é de 48,2038 mph.
Resposta
A velocidade média do perfil de velocidade do arquivo “hwycol.txt” é de 48,2038 mph.
Exercício Resolvido #2
“Autoria própria”
A partir do arquivo de texto salvo no exercício anterior, carregue-o no MATLAB, converta a velocidade para km/h e salve o resultado em outro arquivo .txt, junto com a coluna de dados do tempo. Dica: 1 mph equivale a 1,60934 km/h.
Passo 1
Este exercício é uma continuação do exercício passado. Usaremos novamente a função load() para carregar o perfil de velocidade, faremos a conversão de unidade (de mph para km/h) e salvaremos o resultado usando a função save().
Passo 2
Vamos criar um novo script e salvá-lo na mesma pasta do arquivo de texto do exercício anterior. Eu vou salvar meu script como “Ex2.m”.
Vamos digitar a primeira linha de código no nosso script, que é a função load() para carregarmos o arquivo de texto:
load('hwycol.txt')
Lembrando que a entrada da função load() é o nome do arquivo .txt. Adapte a linha de código acima, se precisar, colocando o nome do arquivo que você salvou no exercício anterior.
Nosso script está assim por enquanto:
Lembra que a função load() cria uma variável com o mesmo nome do arquivo .txt, sem a terminação? Isso quer dizer que, ao rodarmos nosso código, o comando que acabamos de digitar criará uma variável chamada hwycol (ou com o nome do seu arquivo, se o nome for diferente do meu), que contém a matriz do arquivo .txt.
Lembre dessa informação para a próxima etapa ;D
Passo 3
Após digitarmos o comando para carregar o arquivo .txt no script, vamos criar dois vetores: um contendo a primeira coluna da matriz do arquivo “hwycol.txt” e outro contendo a segunda coluna. Para isso, usaremos as duas linhas de código:
time = hwycol(:,1)
vel_mph = hwycol(:,2)
A primeira linha de código diz para o MATLAB armazenar na variável time a primeira coluna da matriz hwycol. Logo, a variável time será um vetor contendo os instantes de tempo do perfil de velocidade.
A segunda linha de código diz quase a mesma coisa, mas ela pede para o MATLAB armazenar a segunda coluna da matriz hwycol na variável vel_mph. Logo, vel_mh é um vetor contendo a velocidade do perfil de velocidade em mph.
O nosso script atualizado está assim:
Agora que temos os vetores, vamos para a conversão de unidades.
Passo 4
O enunciado nos dá o fator de conversão de mph para km/h. Para convertermos as velocidades de mph no vetor vel_mph para km/h, basta multiplicá-lo por 1,60934:
vel_kmh = 1.60934*vel_mph
Ao adicionar a linha de código acima em nosso script, multiplicamos cada elemento do vetor vel_mph por 1,60934 e geramos um novo vetor, chamado de vel_kmh. O vetor vel_kmh contém as velocidades do vetor vel_mph em km/h. Atualizando nosso script:
Passo 5
Agora, vamos criar uma nova matriz com duas colunas, uma com o tempo e outra com a velocidade em km/h. Digite no script a seguinte linha de código:
hwycol_kmh = [time vel_kmh];
Com esse comando, pedimos ao MATLAB que crie uma matriz chamada hwycol_kmh , a partir dos vetores time e vel_kmh. A matriz hwycol_kmh é uma concatenação dos vetores time e vel_kmh: a primeira coluna de hwycol_kmh tem os elementos do vetor time e a segunda coluna de hwycol_kmh tem as velocidades do vetor vel_kmh.
Nosso script está assim por enquanto:
Passo 6
Após ter criado a matriz hwycol_kmh, ela pode ser salva em um arquivo de texto por meio do comando save(), que tem a seguinte estrutura:
save('Nome do arquivo','variável','-ascii')
Logo, para nosso script, o comando fica assim:
save('hwycol_kmh.txt','hwycol_kmh','-ascii')
Ao adicionarmos o comando acima no nosso script, pedimos ao MATLAB que salve a matriz hwycol_kmh no arquivo “hwycol_kmh.txt”. Esse comando salvará o arquivo “hwycol_kmh.txt” na mesma pasta onde se encontra o script.
No final, nosso script ficou assim:
Pronto! Ao rodar esse script, você terá um arquivo de texto com o perfil de velocidade em km/h.
Resposta
Ei, a resposta está no passo a passo :)
Exercício Resolvido #3
“Autoria própria”
A tabela abaixo contém os dados da curva de torque de um motor à combustão:
Usando o Excel e o MATLAB, execute as seguintes tarefas:
- Copie a tabela completa em uma planilha Excel (cabeçalho e dados);
- Carregue esta planilha no MATLAB;
- Com a matriz de dados gerada a partir do carregamento da planilha no MATLAB, crie dois vetores, um contendo a velocidade do motor e outro contendo o torque do motor.
Passo 1
O exercício serve para praticar a função xlsread() do MATLAB. Para fazê-lo, devemos copiar e colar a tabela no Excel, usar a função xlsread() para entrar com os dados da tabela no MATLAB e com os dados, criar os vetores e velocidade e torque.
Passo 2
A letra a nos pede o primeiro passo para resolver o exercício. Vamos copiar e colar tabela com os dados da curva de torque de um motor à combustão:
Salve a planilha Excel em seu computador. Eu salvei a minha planilha de “motor.xlsx”, mas você pode chamar a sua como quiser.
Com a planilha salva, podemos partir para o MATLAB e fazer a letra b do exercício.
Passo 3
Crie um script novo no MATLAB e salve-o na mesma pasta onde você salvou a planilha Excel. Em seguida, vamos entrar com comando para carregar os dados da planilha:
[dados,cabecalho] = xlsread('motor.xlsx');
Nessa linha de código, pedimos ao MATLAB que leia os dados da planilha Excel com nome “motor.xlsx”. Lembre de adaptar o comando, se precisar, caso você tenha dado outro nome para a sua planilha.
Com a linha de código acima, o MATLAB vai salvar os valores numéricos da planilha em uma matriz chamada dados. A matriz dados terá duas colunas, correspondendo às duas colunas da planilha.
O cabeçalho da tabela na planilha será salvo na variável cabecalho, que será um vetor de células com uma linha e duas colunas. Cada elemento do vetor de células contém o texto de uma célula do cabeçalho.
Por enquanto, nosso script está assim:
Para vermos como ficarão as variáveis dados e cabecalho, vamos rodar o script apertando o botão “Run”, destacado abaixo, ou usando a tecla F5 do nosso teclado:
Para imprimir a matriz dados no Command Window, digite seu nome no Command Window e aperte Enter:
Note que são os mesmos valores da tabela da planilha, mas com 1000 em evidência.
Fazendo a mesma coisa para o vetor de células cabecalho:
Note que é exatamente o cabeçalho da tabela.
Concluída a etapa de carregar a planilha Excel no MATLAB, podemos responder a letra c do exercício.
Passo 4
A letra c pede para criarmos dois vetores, um com os valores de velocidade da tabela e outro com os valores de torque. Os vetores devem ser criados a partir da matriz dados.
A primeira coluna da matriz dados corresponde aos valores de velocidade da tabela. Já a segunda coluna corresponde aos valores de torque. Logo, para criarmos os vetores pedidos, devemos acrescentar em nosso script as duas linhas de código:
rpm = dados(:,1)
torque = dados(:,2)
A primeira linha pede ao MATLAB que armazene na variável rpm a primeira coluna de dados. Logo, a variável rpm será um vetor contendo os valores de velocidade da tabela.
A segunda linha pede ao MATLAB que armazene na variável torque a segunda coluna de dados. Logo, a variável torque será um vetor contendo os valores de torque da tabela.
No final, nosso script ficou assim:
Para vermos os vetores, vamos rodar nosso script e pedir para o MATLAB imprimir as variáveis no Command Window. Para isso, vamos entrar no Command Window com os nomes das variáveis:
Perceba que o vetor rpm tem os mesmos valores da primeira coluna da tabela, mas colocando 1000 em evidência. Logo, rpm é um vetor que contém os valores de velocidade do motor.
O vetor torque é exatamente igual à segunda coluna da tabela, contendo, portanto, os valores de torque do motor.
Resposta
Ei, a resposta está no passo a passo :)
Exercício Resolvido #4
“Autoria própria”
A tabela abaixo apresenta o torque de um motor à combustão em função da velocidade do motor e da porcentagem do curso do acelerador. Uma porcentagem igual a 100% indica que o acelerador está sendo pisado até o final do curso. Uma porcentagem igual a 0% indica que o motorista não está pisando no acelerador.
Com o MATLAB, execute as seguintes tarefas:
- Copie e cole os dados da tabela, sem o cabeçalho, para um bloco de notas e salve-o com terminação .txt;
- Carregue o arquivo .txt no MATLAB;
- Encontre a razão, para cada velocidade, entre os torques de cada porcentagem de curso e os torques para um curso de 100%. Exemplo: a razão entre o torque do motor com um curso de 75% e com um curso a 100% é de 450/500 = 0,9, para uma velocidade de 500 rpm ;
- Crie uma matriz com a velocidade do motor e as razões de torque;
- Salve em um arquivo .txt a matriz criada no item anterior.
Passo 1
Neste exercício, vamos praticar a função load() do MATLAB. Primeiro, vamos criar um arquivo de texto com a tabela do enunciado. Em seguida, vamos carregar esse arquivo de texto no MATLAB para podermos manipular os dados.
O resultado da manipulação será salvo em um arquivo .txt.
Passo 2
A primeira etapa do exercício consiste em passar os dados da tabela para o Bloco de Notas, como no print abaixo:
Lembre de somente passar para o bloco de notas os valores numéricos, pois quando um arquivo de texto é carregado no MATLAB com a função load(), ele transforma os dados em uma matriz.
No print acima, as colunas estão separadas por espaços e alguns Tabs, fiz dessa forma para deixar o arquivo organizado e identificar bem as colunas. Mas se você separar as colunas somente com um espaço ou um Tab, dá na mesma, fica à gosto do freguês.
Após fazer esse copia e cola, salve o arquivo em formato .txt. Eu salvei o meu arquivo com o nome “motor_pedal.txt”, mas você pode chamar do que quiser. Com isso, terminamos a letra a do exercício
Passo 3
Resolveremos a letra b usando a função load(). No MATLAB, crie um script novo e salve-o na pasta onde você salvou seu arquivo .txt. Então, digite no script o seguinte comando:
load('motor_pedal.txt')
Com esse comando, vamos carregar no MATLAB os valores numéricos do arquivo de texto “motor_pedal.txt”. Lembre de adaptar o comando caso você tenha dado um nome diferente para seu arquivo de texto.
O comando acima armazena os dados do arquivo de texto em uma matriz, cujo nome será o nome do arquivo sem a terminação. No meu caso, será criada uma matriz chamada motor_pedal. Lembre que a sua matriz pode ter um nome diferente, caso você tenha chamado seu arquivo .txt com um nome diferente.
Nosso script ficou assim:
Podemos ver como ficou a matriz que o MATLAB criou após rodarmos o script e entrarmos com o nome da matriz no Command Window, como no print abaixo:
Note que são os mesmos valores do arquivo .txt, mas com 1000 colocado em evidência.
Com isso, concluímos a letra b do exercício.
Passo 4
Para podermos responder o restante da questão, devemos criar alguns vetores, cada um igual a uma coluna da matriz. Desta forma, ficará mais fácil de calcular as razões de torque e criar a matriz contendo as razões.
Para transformar as colunas da matriz motor_pedal em colunas, digite as seguintes linhas de código no nosso script:
vel = motor_pedal(:,1);
pedal_100 = motor_pedal(:,2);
pedal_75 = motor_pedal(:,3);
pedal_50 = motor_pedal(:,4);
pedal_25 = motor_pedal(:,5);
pedal_0 = motor_pedal(:,6);
Repara que, dentro dos parênteses, temos sempre dois pontos “:” antes da vírgula. O que vem antes da vírgula indica quais linhas estamos selecionando. E, quando usamos dois pontos, significa que estamos pegando todas as linhas, ou seja, a coluna inteira. Já o valor que vem depois da vírgula indica qual coluna estamos selecionando em cada caso.
Na primeira linha, armazenamos a primeira coluna da matriz motor_pedal na variável vel. Logo, vel é um vetor que contém os valores de velocidade do motor.
Na segunda linha, armazenamos a segunda coluna da matriz motor_pedal na variável pedal_100. Logo, pedal_100 é um vetor que contém os valores de torque do motor quando o acelerador está sendo pisado até o fundo.
Da terceira linha em diante, a lógica é a mesma. Armazenamos uma coluna da matriz motor_pedal, contendo valores de torque para uma determinada porcentagem de curso do acelerador, em uma variável chamada pedal_ seguida da porcentagem de curso.
Após digitar essas linhas de código, o script fica assim:
Tendo criado um vetor para cada coluna de motor_pedal, podemos responder o restante da questão.
Passo 5
A letra c pede para calcularmos a razão, para cada velocidade, entre os torques de cada porcentagem de curso e os torques para um curso de 100%. Para fazermos isso, incluímos as seguintes linhas de código no nosso script:
razao_100 = pedal_100./pedal_100;
razao_75 = pedal_75./pedal_100;
razao_50 = pedal_50./pedal_100;
razao_25 = pedal_25./pedal_100;
razao_0 = pedal_0./pedal_100;
Na primeira linha de código, dividimos cada elemento do vetor pedal_100 pelo elemento que está na mesma posição no vetor pedal_100 e salvamos o vetor resultante na variável razao_100. O vetor razao_100 será um vetor cujos todos os elementos serão iguais a 1, visto que estamos trabalhando com dois vetores iguais.
Na segunda linha de código, dividimos cada elemento do vetor pedal_75 pelo elemento que está na mesma posição no vetor pedal_100 e salvamos o vetor resultante na variável razao_75. Isso faz com que consigamos encontrar a razão de torque para cada velocidade do motor.
Da terceira linha de código em diante, é a mesma lógica, sendo uma linha para cada porcentagem de curso do acelerador.
Nosso script está assim agora:
A resposta da letra c são os vetores razao_100, razao_75, razao_50, razao_25 , razao_0.
Passo 6
A letra d nos pede para criarmos uma matriz com a velocidade do motor e as respectivas razões de torque. Para responder a esta questão, vamos concatenar o vetor vel, que contém a velocidade do motor, com os vetores que contêm as razões de torque para cada porcentagem de curso do acelerador.
Digite a linha de código abaixo no script para realizar a concatenação:
razoes = [vel razao_100 razao_75 razao_50 razao_25 razao_0];
Com essa linha de código, o MATLAB cria uma matriz chamada razoes cuja primeira coluna contém os valores do vetor vel; a segunda coluna contém os valores do vetor razao_100; a terceira coluna contém os valores do vetor razao_75; e assim sucessivamente.
Atualizando nosso script:
Rodando o código e pedindo para o MATLAB imprimir a matriz razoes, podemos ver como ela ficou:
Está aí a resposta da letra d.
Passo 7
Finalmente, chegamos ao último item do exercício. Nele, temos que salvar a matriz criada na letra d em um arquivo .txt. Para fazer isso, acrescente no final do script o comando save():
save('motor_pedal_razoes.txt','razoes','-ascii')
Lembrando que a função save() tem a seguinte estrutura:
save('Nome do arquivo','variável','-ascii')
Logo, salvamos a matriz razoes em um arquivo de texto chamado “motor_pedal_razoes.txt”.
Nosso código final ficou assim:
Ao rodarmos o código acima, um arquivo chamado “motor_pedal_razoes.txt” será criado na mesma pasta onde se encontra o script do MATLAB. O arquivo conterá a matriz razoes, com os valores em notação científica:
Está aí a solução da letra d.
Resposta
Ei, a resposta está no passo a passo :)
Exercício Resolvido #5
“Autoria própria”
Esta planilha contém os dados do PIB municipal, referente à indústria de transformação e extrativa mineral, de cada cidade do estado do Rio de Janeiro, de 1970 a 1996. Baixe a planilha e com o MATLAB:
- Calcule a média do PIB do estado do Rio de Janeiro em 1996;
- Encontre o município que apresentou o maior PIB em 1975.
Passo 1
Este exercício é para praticar a função xlsread() do MATLAB. A partir dos dados da planilha abaixo (que você pode acessar pelo link):
Você deve calcular a média do PIB do estado do RJ em 1996, último ano da planilha, e dizer qual cidade apresentou o maior PIB em 1975.
Passo 2
Antes de usar o MATLAB, salve a planilha em seu computador indo em:
Arquivo -> Fazer download -> Microsoft Excel (.xlsx)
O print abaixo mostra onde você deve clicar para fazer o download.
Se você não alterar o nome do arquivo, ele fiacará salvo como “ipeadata_PIB_municipal_industria_RJ.xlsx”.
Passo 3
Carregue a planilha “ipeadata_PIB_municipal_industria_RJ.xlsx” no MATLAB. Para isso, crie um novo script e salve-o na mesma pasta onde você salvou a planilha Excel. Em seguida, digite o comando no novo script:
[pib,cabecalho] = xlsread('ipeadata_PIB_municipal_industria_RJ.xlsx');
Este comando carrega a planilha Excel de nome “ipeadata_PIB_municipal_industria_RJ.xlsx” no MATLAB. Lembre de adaptar o comando ao nome da sua planilha, caso você tenha nomeado o arquivo de outra forma.
A função xlsread() vai criar uma matriz chamada pib, contendo os valores numéricos da planilha, e uma matriz de células chamada cabecalho, contendo o cabeçalho da planilha. A matriz pib será uma matriz de 94 linhas, cada uma correspondendo a um município do Rio de Janeiro, e 5 colunas, cada uma correspondendo a um ano da planilha (1970, 1975, 1980, 1985 e 1996).
A matriz de células cabecalho terá 8 colunas e 95 linhas, sendo a primeira linha referente aos anos e o restante das linhas correspondendo a um município do Rio de Janeiro. A terceira coluna de cabecalho contém os nomes dos municípios.
Com a primeira linha do nosso script, ele ficou assim:
Passo 4
Após incluirmos o comando para carregar a planilha no MATLAB, vamos responder a letra a do exercício. Ela pede para calcularmos a média do PIB do estado do Rio de Janeiro em 1996. Para isso, usaremos a função mean().
Para usarmos o mean(), primeiramente vamos criar um vetor contendo os valores do PIB dos municípios do Rio de Janeiro em 1996, com a seguinte linha de código:
pib_1996 = pib(:,end);
Na linha de código, eu crio um vetor chamado pib_1996 e armazeno nele os valores da última coluna da matriz pib (por isso o termo end), visto que é o último ano da planilha.
Em seguida, adiciono o comando:
media_1996 = mean(pib_1996);
Com este comando, eu calculo a média dos valores do vetor pib_1996 e armazeno o resultado na variável media_1996.
Agora, nosso script está assim:
Ao rodarmos o script e pedirmos para o MATLAB imprimir a variável media_1996, temos:
No print acima, pedi para o MATLAB imprimir os números com 15 casas após a vírgula, para ver o valor mais exato.
Logo, o PIB médio do estado do Rio de Janeiro é de em torno de R$ 487.926,40. Com isso, a letra a está resolvida.
Passo 5
Para resolver a letra b, usaremos a função max() do MATLAB. Para encontrarmos o município com o maior PIB de 1975, primeiramente criamos um vetor para armazenar os valores da segunda coluna da matriz pib, correspondente ao ano de 1975. Isto é feito com a seguinte linha de código:
pib_1975 = pib(:,2);
Com esta linha, pedimos ao MTLAB para armazenar no vetor pib_1975 os valores da segunda coluna de pib.
Para encontrar o maior PIB de 1975, usamos a função max() em pib_1975, digitando:
[pib_max,posicao] = max(pib_1975);
Esta linha de código pede ao MATLAB que encontre o maior valor dentro do vetor pib_1975 e armazene o valor máximo na variável pib_max. Na linha de código, a função max() também retorna a posição do valor máximo no vetor, que armazenada na variável posicao. Esta informação será importante para encontrar o nome do município no próximo passo.
Agora, nosso script está com essa cara:
Passo 6
Para encontrarmos o nome do município que teve o maior PIB de 1975, usaremos a variável cabecalho e a variável posicao encontrada no passo anterior.
Primeiro, vamos ver as primeiras linhas da nossa variável cabecalho:
Reparou que ela tem uma linha a mais do que a matriz pib? Isso porque a primeira linha de cabecalho descreve o que tem em cada coluna da planilha Excel. A listagem dos nomes dos municípios começa a partir da segunda linha de cabecalho e a partir da segunda linha da planilha.
Por isso, para usarmos a variável posicao para encontrar o nome do município, devemos adicionar +1 em seu valor, já que a matriz pib só tem os valores numéricos, que começam a ser apresentados na segunda linha da planilha, lado a lado com os nomes dos municípios.
Considerando tudo isso, adicionamos a seguinte linha no nosso script:
municipio = cabecalho{posicao + 1,3};
Ela diz ao MATLAB para armazenar na variável municipio o elemento que está na linha posicao + 1 e na coluna 3 de cabecalho. A coluna 3 da matriz de células cabecalho tem os nomes dos municípios do Rio de Janeiro.
Nosso script final ficou assim:
Ao rodar o script e pedindo para imprimir pib_max, posicao e municipio, encontramos:
O município que teve o maior PIB do estado do Rio de Janeiro em 1975 foi o município do Rio de Janeiro, com algo em torno de R$ 31,918 milhões.
O valor de pib_max está na posição 68 do vetor pib_1975, logo, o nome do município está na linha 69 de cabecalho. Podemos conferir isso na própria planilha, onde o município do Rio de Janeiro está na linha 69, como destacado abaixo:
Resposta
Ei, a resposta está no passo a passo :)
Exercício Resolvido #6
Adaptado de An Engineer’s Guide to MATLAB® - With Applications from Mechanical, Aerospace, Electrical, Civil, and Biological Systems Engineering, de Edward B. Magrab et. al, 3ª edição, 2011. Exercício 8.3, p. 436”
Taguchi define que o fator de perda médio de um processo é proporcional a
Onde é o desvio padrão, é a média aritmética e é média alvo. Ou seja, ao comparar dois processos, aquele cuja média é mais próxima a e cuja variância é menor é o processo com o menor fator de perda. Copie os dados da tabela abaixo para um arquivo de texto e, com o MATLAB, determine qual processo tem o menor fator de perda médio quando .
Passo 1
Neste exercício, vamos praticar a função do MATLAB. Primeiro, vamos criar um arquivo de texto com a tabela do enunciado. Em seguida, vamos carregar esse arquivo de texto no MATLAB para podermos manipular os dados. Vamos implementar a equação para calcular no mesmo script onde carregamos o arquivo .txt e usar os dados do arquivo de texto para calcular para cada processo. Segundo o enunciado, o que tiver o menor é o que tem o menor fator de perda.
Passo 2
A primeira etapa do exercício consiste em passar os dados da tabela para o Bloco de Notas, como no print abaixo:
Lembre de somente passar para o bloco de notas os valores numéricos, pois quando um arquivo de texto é carregado no MATLAB com a função , ele transforma os dados em uma matriz. Também não se esqueça de trocar as vírgulas por pontos para marcar os decimais.
Após copiar os dados, salve o arquivo em formato .txt. Eu salvei o meu arquivo com o nome “processos.txt”, mas você pode chamar como quiser.
Passo 3
Para carregar o arquivo .txt no MATLAB, usaremos a função . No MATLAB, crie um script novo e salve-o na pasta onde você salvou seu arquivo .txt. Então, digite no script o seguinte comando:
Com esse comando, vamos carregar no MATLAB os valores numéricos do arquivo de texto “processos.txt”. Lembre de adaptar o comando caso você tenha dado um nome diferente para seu arquivo de texto.
O comando acima armazena os dados do arquivo de texto em uma matriz, cujo nome será o nome do arquivo sem a terminação. No meu caso, será criada uma matriz chamada . Lembre que a sua matriz pode ter um nome diferente, caso você tenha chamado seu arquivo .txt com um nome diferente.
Podemos ver como ficou a matriz que o MATLAB criou rodando o script e imprimindo no Command Window, como no print abaixo:
Passo 4
Para responder a questão, vamos criar dois vetores, um para cada coluna da matriz. Desta forma, ficará mais fácil de calcular o de cada processo.
Para transformar as colunas da matriz em vetores, digite as seguintes linhas de código no nosso script:
Na primeira linha, armazenamos a primeira coluna da matriz na variável . Logo, é um vetor que contém os dados do Processo 1.
Na segunda linha, fazemos a mesma coisa para o Processo 2: armazenamos a segunda coluna de na variável , logo, é um vetor com os dados do Processo 2.
Passo 5
Vamos calcular para cada processo usando os vetores e . Lembrando que é calculado por:
O enunciado nos dá . O desvio padrão será calculado para cada vetor usando a função do MATLAB, que retorna o desvio padrão de um conjunto de dados. Já a média será calculada aplicando a função em cada vetor, pois ela nos retorna a média aritmética de um conjunto de dados.
Portanto, para calcular o de cada processo, digite em seu script as seguintes linhas de código:
Na primeira linha, definimos a variável , representando a média alvo, e a fazemos igual a , conforme pedido pelo enunciado.
Na segunda linha, calculamos o do Processo 1, cujo resultado é armazenado na variável . Note que aplicamos e no vetor para determinar , pois é o vetor que tem os dados do Processo 1.
Fazemos a mesma coisa para o Processo 2 na terceira linha, onde calculamos do Processo 2, que é armazenado em , usando o vetor .
Para ver o resultado e avaliar qual dos dois processos tem o menor fator de perda média, execute o programa e imprima no Command Window e :
Resposta
O Processo 1 tem e o Processo 2, . O processo que tem o menor fator de perda médio quando é o Processo 2, pois seu é menor.
Exercício Resolvido #7
“Adaptado de MATLAB for Engineering Applications, de William J. Palm III. Seção 2.3, exemplo 3, p. 69”
A tabela a seguir fornece dados para a distância percorrida, em milhas, ao longo de cinco rotas de caminhão e o tempo correspondente necessário para percorrer cada rota. Entre os dados em um arquivo de texto e use-os para calcular a velocidade média, em metros por segundo, necessária para conduzir cada rota. Encontre a rota que tem a maior velocidade média.
Passo 1
Neste exercício, vamos praticar a função do MATLAB. Primeiro, vamos criar um arquivo de texto com a tabela do enunciado. Em seguida, vamos carregar esse arquivo de texto no MATLAB para podermos manipular os dados. Teremos que converter a distância de milhas para metros e o tempo de horas de para segundos para calcularmos a velocidade média em . Após calcular a velocidade média, usaremos a função para encontrar a rota com maior velocidade média.
Passo 2
A primeira etapa do exercício consiste em passar os dados da tabela para o Bloco de Notas, como no print abaixo:
Lembre de somente passar para o bloco de notas os valores numéricos, pois quando um arquivo de texto é carregado no MATLAB com a função , ele transforma os dados em uma matriz. Também não se esqueça de trocar as vírgulas por pontos para marcar os decimais.
Após copiar os dados, salve o arquivo em formato .txt. Eu salvei o meu arquivo com o nome “rotas.txt”, mas você pode chamar como quiser.
Passo 3
Para carregar o arquivo .txt no MATLAB, usaremos a função . No MATLAB, crie um script novo e salve-o na pasta onde você salvou seu arquivo .txt. Então, digite no script o seguinte comando:
Com esse comando, vamos carregar no MATLAB os valores numéricos do arquivo de texto “rotas.txt”. Lembre de adaptar o comando caso você tenha dado um nome diferente para o .txt.
O comando acima armazena os dados do arquivo de texto em uma matriz, cujo nome será o nome do arquivo sem a terminação. No meu caso, será criada uma matriz chamada . Se seu arquivo .txt tiver um nome diferente, sua matriz também terá um nome diferente.
Podemos ver como ficou a matriz que o MATLAB criou rodando o script e imprimindo no Command Window, como no print abaixo:
Passo 4
Para calcular a velocidade média de cada rota, vamos criar dois vetores, um para cada linha da matriz .
Para transformar as linhas da matriz em vetores, digite as seguintes linhas de código no nosso script:
Na primeira linha, armazenamos a primeira linha da matriz na variável , correspondendo à distância percorrida em cada rota. Nesta linha, já fazemos também a conversão de milhas para metros, multiplicando o vetor por , pois .
Similarmente, na segunda linha, armazenamos a segunda linha da matriz na variável , correspondendo ao tempo necessário para concluir cada uma das rotas. Também já fazemos a conversão de horas para segundos, multiplicando o vetor por , pois .
Passo 5
Para calcular a velocidade média de cada rota, devemos dividir a distância percorrida pelo tempo para concluir cada rota. Vamos fazer isso por meio do comando:
Dividimos cada elemento do vetor (que contém a distância de cada rota) pelo elemento de (vetor com o tempo de cada rota) que está na mesma posição, por meio do operador . Desta forma, criamos um vetor chamado que contém a velocidade média de cada rota em .
Para ver como ele ficou, execute o programa e imprima no Command Window:
Passo 6
Para determinar a rota com maior velocidade média, vamos aplicar a função em , por meio do comando:
Com este comando, a velocidade média máxima será armazenada em e a sua posição no vetor é salva na variável . A posição de em corresponde ao índice da rota que tem no cabeçalho da tabela do enunciado.
Vamos rodar o programa e ver a resposta? Imprima e no Command Window:
Resposta
A rota que tem a maior velocidade média é a rota , correspondendo a .
Exercício Resolvido #8
“Adaptado de An Engineer’s Guide to MATLAB® - With Applications from Mechanical, Aerospace, Electrical, Civil, and Biological Systems Engineering, de Edward B. Magrab et al, 3ª edição, 2011. Exercício 5.16, p. 251”
A fórmula computacional para a equação generalizada para o fator de compressibilidade de um gás é dada por
onde , , é a constante do gás em , é a temperatura em , é a pressão em , é o inverso da densidade em , e são a temperatura e a pressão críticas, respectivamente, e os valores das 33 constantes são dados na tabela abaixo e podem ser recuperadas nesta planilha.
Baixe a planilha e no, MATLAB, crie uma função que calcula . Confira sua função, usando , com os seguintes valores de teste:
Passo 1
Este exercício é para praticar a função do MATLAB. Os valores das constantes para calcular o fator de compressibilidade , apresentados na tabela do enunciado, estão na planilha abaixo (que você pode acessar e baixar pelo link do enunciado):
A partir dos valores da planilha, você deve construir uma função para calcular e verificá-la com os três valores de teste do enunciado.
Passo 2
Antes de usar o MATLAB, salve a planilha em seu computador indo em:
O print abaixo mostra onde você deve clicar para fazer o download.
Se você não alterar o nome do arquivo, ele ficará salvo como “constantes.xls”.
Passo 3
Em um script novo do MATLAB, crie uma função para calcular . Eu chamei a minha função de , mas você pode chamar como quiser. Esta função deve ter duas entradas, e , a partir das quais ela calcula o fator de compressibilidade :
Por isso, a minha função tem duas entradas, e , e uma saída , que é calculada a partir da equação fornecida pelo enunciado.
A função que calcula deve ser salva na mesma pasta onde você salvou a planilha em Excel, pois é na função que você carregará os dados de “constantes.xls”. Para isto, digite o seguinte comando na função:
O comando carrega a planilha Excel de nome “constantes.xls” no MATLAB. Lembre de adaptar o comando ao nome da sua planilha, caso você tenha nomeado o arquivo de outra forma.
A função vai criar uma matriz chamada , contendo os valores numéricos da planilha, e uma matriz de células chamada , contendo o cabeçalho da planilha. A matriz será uma matriz de linhas, cada uma correspondendo a uma constante , e colunas, sendo que a primeira coluna contém os índices e a segunda coluna, as constantes .
Passo 4
Após incluirmos o comando para carregar a planilha no MATLAB, vamos criar dois vetores, um contendo a coluna de índices e outro com as constantes, com as seguintes linhas de código:
Na primeira linha de código, eu crio um vetor chamado que contém a primeira coluna da matriz . Logo, o vetor é composto pelos índices da tabela do enunciado e vai de a .
Na segunda linha de código, eu crio um vetor que corresponde à segunda coluna de , sendo composto pelas constantes da tabela do enunciado, indo de a .
Passo 5
O próximo passo é implementar em a equação dada pelo enunciado. Para isso, expanda os somatórios e substitua as constantes , , ... por . Isso quer dizer que, por exemplo, que a constante da equação corresponde ao primeiro elemento do vetor , a constante ao segundo elemento de , e assim por diante.
Substitua também o dos expoentes dos somatórios pelos índices do vetor correspondente. Por exemplo, no primeiro somatório, temos . Em , usaremos , ou seja, . Para o expoente, substituiremos por , logo, o termo do primeiro somatório correspondendo a ficará com essa cara na nossa implementação no MATLAB:
Lembrando que a entrada de corresponde à letra grega .
Considerando tudo isso, é para a equação que calcula fique com essa cara na sua função:
Eu usei os ... para quebrar a linha de código e ficar mais fácil de ver se eu digitei a equação certinho, recomendo que você faça o mesmo =)
Passo 6
Devemos verificar nossa função para três valores de teste, mudando o formato dos números do MATLAB com o comando :
Para isto, usaremos o Command Window. Digite no Command Window o comando e, em seguida, calcule com a função que você criou, considerando e :
Pelo enunciado, temos que e com nossa função encontramos que , uma diferença de . Por enquanto, nossa função tá com uma precisão bem boa =)
Vamos testar agora , tendo como entrada da função e :
Pelo enunciado, temos que e com nossa função encontramos que , uma diferença de . Outro resultado muito bom!
Finalmente, vamos testar , tendo como entrada de e :
Pelo enunciado, temos que e com nossa função encontramos que , uma diferença de .
As diferenças entre os valores de teste e as respostas de nossa função são apenas residuais, por isso, podemos considerar que nossa função tá show!
Resposta
Ei, a resposta está no passo a passo :)