Entrar e salvar arquivos de dados

Ver Todos os Exercícios

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

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

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

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:

  1. Copie a tabela completa em uma planilha Excel (cabeçalho e dados);
  2. Carregue esta planilha no MATLAB;
  3. 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

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:

  1. Copie e cole os dados da tabela, sem o cabeçalho, para um bloco de notas e salve-o com terminação .txt;
  2. Carregue o arquivo .txt no MATLAB;
  3. 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 ;
  4. Crie uma matriz com a velocidade do motor e as razões de torque;
  5. 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

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:

  1. Calcule a média do PIB do estado do Rio de Janeiro em 1996;
  2. 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

Taguchi define que o fator de perda médio de um processo é proporcional a

L a v g = s 2 + x _ - τ 2

Onde s é o desvio padrão, x _ é 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 s 2 é 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 τ = 92,0 .

Passo 1

Neste exercício, vamos praticar a função l o a d ( ) 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 L a v g no mesmo script onde carregamos o arquivo .txt e usar os dados do arquivo de texto para calcular L a v g para cada processo. Segundo o enunciado, o que tiver o menor L a v g é 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 l o a d ( ) , 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 l o a d ( ) . 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 p r o c e s s o s . 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 p r o c e s s o s 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 L a v g de cada processo.

Para transformar as colunas da matriz p r o c e s s o s em vetores, digite as seguintes linhas de código no nosso script:

Na primeira linha, armazenamos a primeira coluna da matriz p r o c e s s o s na variável p 1 . Logo, p 1 é 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 p r o c e s s o s na variável p 2 , logo, p 2 é um vetor com os dados do Processo 2.

Passo 5

Vamos calcular L a v g para cada processo usando os vetores p 1 e p 2 . Lembrando que L a v g é calculado por:

L a v g = s 2 + x _ - τ 2

O enunciado nos dá τ = 92 . O desvio padrão s será calculado para cada vetor usando a função s t d do MATLAB, que retorna o desvio padrão de um conjunto de dados. Já a média x _ será calculada aplicando a função m e a n em cada vetor, pois ela nos retorna a média aritmética de um conjunto de dados.

Portanto, para calcular o L a v g de cada processo, digite em seu script as seguintes linhas de código:

Na primeira linha, definimos a variável t a u , representando a média alvo, e a fazemos igual a 92 , conforme pedido pelo enunciado.

Na segunda linha, calculamos o L a v g do Processo 1, cujo resultado é armazenado na variável L 1 . Note que aplicamos s t d e m e a n no vetor p 1 para determinar L 1 , pois é o vetor p 1 que tem os dados do Processo 1.

Fazemos a mesma coisa para o Processo 2 na terceira linha, onde calculamos L a v g do Processo 2, que é armazenado em L 2 , usando o vetor p 2 .

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 L 1 e L 2 :

Resposta

O Processo 1 tem L a v g = 5,5904 e o Processo 2, L a v g = 2,6936 . O processo que tem o menor fator de perda médio quando τ = 92,0 é o Processo 2, pois seu L a v g é menor.

Exercício Resolvido #7

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 l o a d 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 m / s . Após calcular a velocidade média, usaremos a função m a x 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 l o a d , 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 l o a d ( ) . 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 r o t a s . 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 r o t a s 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 r o t a s .

Para transformar as linhas da matriz r o t a s em vetores, digite as seguintes linhas de código no nosso script:

Na primeira linha, armazenamos a primeira linha da matriz r o t a s na variável d , correspondendo à distância percorrida em cada rota. Nesta linha, já fazemos também a conversão de milhas para metros, multiplicando o vetor r o t a s ( 1 , : ) por 1609,34 , pois 1   m i = 1609,34   m .

Similarmente, na segunda linha, armazenamos a segunda linha da matriz r o t a s na variável t , correspondendo ao tempo necessário para concluir cada uma das 5 rotas. Também já fazemos a conversão de horas para segundos, multiplicando o vetor r o t a s ( 2 , : ) por 3600 , pois 1   h = 3600   s .

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 d (que contém a distância de cada rota) pelo elemento de t (vetor com o tempo de cada rota) que está na mesma posição, por meio do operador . / . Desta forma, criamos um vetor chamado v _ m e d i a que contém a velocidade média de cada rota em m / s .

Para ver como ele ficou, execute o programa e imprima v _ m e d i a no Command Window:

Passo 6

Para determinar a rota com maior velocidade média, vamos aplicar a função m a x ( ) em v _ m e d i a , por meio do comando:

Com este comando, a velocidade média máxima será armazenada em v _ m a x e a sua posição no vetor v _ m e d i a é salva na variável r o t a . A posição de v _ m a x em v _ m e d i a corresponde ao índice da rota que tem no cabeçalho da tabela do enunciado.

Vamos rodar o programa e ver a resposta? Imprima v _ m a x e r o t a no Command Window:

Resposta

A rota que tem a maior velocidade média é a rota 1 , correspondendo a 24,3050   m / s .

Exercício Resolvido #8

A fórmula computacional para a equação generalizada para o fator de compressibilidade Z de um gás é dada por

onde τ = T c / T   ( 0,4   ≤ τ ≤ 1 ) , r = R T c / P c ν , R é a constante do gás em ( M P a   m 3 ) / ( k g   K ) , T é a temperatura em K , P é a pressão em M P a , ν é o inverso da densidade em m 3 / k g , T c e P c são a temperatura e a pressão críticas, respectivamente, e os valores das 33 constantes A j são dados na tabela abaixo e podem ser recuperadas nesta planilha.

Baixe a planilha e no, MATLAB, crie uma função que calcula Z ( r , τ ) . Confira sua função, usando f o r m a t   l o n g   e , com os seguintes valores de teste:

Passo 1

Este exercício é para praticar a função x l s r e a d ( ) do MATLAB. Os valores das constantes A j para calcular o fator de compressibilidade Z , 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 Z 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:

A r q u i v o → F a z e r   d o w n l o a d → M i c r o s o f t   E x c e l   ( . x l s )

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 Z . Eu chamei a minha função de f a t o r _ c o m p r e s s a o , mas você pode chamar como quiser. Esta função deve ter duas entradas, r e τ , a partir das quais ela calcula o fator de compressibilidade Z :

Por isso, a minha função f a t o r _ c o m p r e s s a o tem duas entradas, r e t a u , e uma saída Z , que é calculada a partir da equação fornecida pelo enunciado.

A função que calcula Z deve ser salva na mesma pasta onde você salvou a planilha em Excel, pois é na função f a t o r _ c o m p r e s s a o que você carregará os dados de “constantes.xls”. Para isto, digite o seguinte comando na função:

O comando x l s r e a d 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 x l s r e a d ( ) vai criar uma matriz chamada X , contendo os valores numéricos da planilha, e uma matriz de células chamada Y , contendo o cabeçalho da planilha. A matriz X será uma matriz de 33 linhas, cada uma correspondendo a uma constante A j , e 2 colunas, sendo que a primeira coluna contém os índices j e a segunda coluna, as constantes A j .

Passo 4

Após incluirmos o comando para carregar a planilha no MATLAB, vamos criar dois vetores, um contendo a coluna de índices j e outro com as constantes   A j , com as seguintes linhas de código:

Na primeira linha de código, eu crio um vetor chamado J que contém a primeira coluna da matriz X . Logo, o vetor J é composto pelos índices j da tabela do enunciado e vai de 1 a 33 .

Na segunda linha de código, eu crio um vetor A que corresponde à segunda coluna de X , sendo A composto pelas constantes A j da tabela do enunciado, indo de A 1 a A 33 .

Passo 5

O próximo passo é implementar em f a t o r _ c o m p r e s s a o a equação dada pelo enunciado. Para isso, expanda os somatórios e substitua as constantes A 1 , A 2 , ... A 33 por A ( 1 ) ,   A ( 2 ) , . . . , A ( 33 ) . Isso quer dizer que, por exemplo, que a constante A 1 da equação corresponde ao primeiro elemento do vetor A , a constante A 2 ao segundo elemento de A , e assim por diante.

Substitua também o i dos expoentes dos somatórios pelos índices do vetor J correspondente. Por exemplo, no primeiro somatório, temos ∑ i = 1 6 A i τ i - 1   . Em i = 1 , usaremos A 1 , ou seja, A ( 1 ) . Para o expoente, substituiremos i por J ( 1 ) , logo, o termo do primeiro somatório correspondendo a i = 1 ficará com essa cara na nossa implementação no MATLAB:

A 1 * t a u ^ ( J 1 - 1 )

Lembrando que a entrada t a u   de f a t o r _ c o m p r e s s a o corresponde à letra grega τ .

Considerando tudo isso, é para a equação que calcula Z 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 f o r m a t   l o n g   e :

Para isto, usaremos o Command Window. Digite no Command Window o comando f o r m a t   l o n g   e e, em seguida, calcule Z ( 1,1 ) com a função f a t o r _ c o m p r e s s a o que você criou, considerando r = 1 e t a u = 1 :

Pelo enunciado, temos que Z ( 1,1 ) = 0,70242396927 e com nossa função encontramos que Z = 0,7024239692890100 , uma diferença de 2,7 ∙ 10 - 9 % . Por enquanto, nossa função tá com uma precisão bem boa =)

Vamos testar agora Z ( 1 / 0,3 ; 1 ) , tendo como entrada da função f a t o r _ c o m p r e s s a o r = 1 / 0,3 e t a u = 1 :

Pelo enunciado, temos que Z ( 1 / 0,3 ; 1 ) = 0,29999999985 e com nossa função encontramos que Z = 0,2999999999775298 , uma diferença de - 4,2 ∙ 10 - 8 % . Outro resultado muito bom!

Finalmente, vamos testar Z ( 2,5 ; 0,5 ) , tendo como entrada de f a t o r _ c o m p r e s s a o r = 2,5 e t a u = 0,5 :

Pelo enunciado, temos que Z ( 2,5 ; 0,5 ) = 0,99221853928 e com nossa função encontramos que Z = 0,9922185392893363 , uma diferença de - 9,4 ∙ 10 - 10 % .

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 :)