MATLAB - чтение нескольких * .log файлов, вычисление и сохранение в формате. * Txt в новой папке - PullRequest
0 голосов
/ 22 ноября 2018

Я делаю разные измерения и сохраняю их как * .log файлы, вычисляю их и сохраняю как. * Txt.

%Filtering log files 
l = dir('*.log');

%Array size detection
[rows cols] = size(l);

%Choose a last file
file_name =  strcat(strcat(l(rows).folder,'/'),l(rows).name)

%Reading log last file 
fileread = fopen(file_name);

%Convert to float
times = fread(fileread,'float32');

%Filtering times and set to 0 small values
times(times<1e-8)=0;

%Set right times values
times_s = times * 1.0e-06;

%Solve full rotation speed (Hz)
motorspeed_full = 1./(2.*times_s)

%Filtering inf values and set to 0
motorspeed_full(motorspeed_full>1e+10)=0;

%Solve half rotation speed (Hz)
motorspeed_half = 1./(times_s);

A = '.txt';

[filepath,name,ext] = fileparts(file_name);

Xfilename = cat(2,name,A);

dlmwrite(Xfilename,motorspeed_full,'precision','%.3f');

Таким образом, можно выбрать последний файл, вычислить его и преобразовать в.*текст.Итак, теперь я должен сделать расчет после каждого измерения.

enter image description here

Моя цель:

  • Выполнение первых 1 ... n мер (1 ... n - * .log и wav's)
  • Расчет и сохранение 1 ... n * .log в * .txt (см. Рисунок)
  • Создать папку с именем файла (например, 20181120_125713) и вставить file_name.txt и file_name.wav в эту структуру папок Aim

Вопросы:

  • Как я могу преобразовать все * .log файлы в * .txt файлы, используя dlmwrite?
  • Как создать новую папку с именем_файла

    mkdir (имя);

для всех файлов?

  • Как переместить файлы с одинаковыми именами в папку с одинаковым именем?Имя папки меняется каждый раз, поэтому я не могу работать с

    источником исходного файла movefile

    Большое спасибо за любую помощь: *)

1 Ответ

0 голосов
/ 29 ноября 2018

Вот мое решение.Может быть, это может кому-нибудь помочь:

clear all;
clc;

%Filtering log files
l = dir('*.log');
for k = 1:length(l)
    next_name = l(k).name

    %Array size detection
    [rows cols] = size(l);

    %Choose a last file
    file_name = next_name;

    %Reading log last file
    fileread = fopen(file_name);

    %Convert to float
    times = fread(fileread,'float32');

    %Filtering times and set to 0 small values
    times(times<1e-8)=0;

    %Set right times values
    times_s = times * 1.0e-06;

    %Solve full rotation speed (Hz)
    motorspeed_full = 1./(2.*times_s);

    %Filtering inf values and set to 0
    motorspeed_full(motorspeed_full>1e+10)=0;

    %Solve half rotation speed (Hz)
    motorspeed_half = 1./(times_s);

    A = '.txt';

    [filepath,name,ext] = fileparts(file_name);

    Xfilename = [name,A];

    mkdir(name)

    dlmwrite([name,filesep,Xfilename],motorspeed_full,'precision','%.3f');
    % [name,'.wav'],[name, file, name, '.wav']
    movefile([name,'.wav'],[name, filesep, name, '.wav']);
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...