【MATLAB】CSV 파일에 계산 셀(수식 셀)을 추가하여 EXCEL 파일로 저장

10074 단어 Excelmatlab

소개


matlab는 수치 계산에 강하고, 음향 파일을 열어 진폭 그래프를 출력하거나 FFT하는 등을 간단하게 실시할 수 있다.
다양한 분석 결과를 고객에게 제출하는 경우는, 당사의 경우는 excel 파일(xlsx)의 경우가 많고, 또 고객이 파라미터를 바꾸면서 확인할 수 있도록, 계산 결과는 원시의 수치가 아니고 , 계산 셀을 사용합니다.

"계산 셀"이라는 것은 여기서
=round(A1*B1, 0)
같은 느낌의 수식이 들어간 셀을 말하고 있다.

계산 셀이 있기 때문에 지금까지
  • matlab로 숫자 계산하여 CSV 파일에 저장
  • excel에서 CSV 파일을 열고 계산 셀을 추가하고 xlsx로 저장

  • 라고 하는 순서를 밟고 있어, 계산 셀을 추가하는 작업이 멘도치-였다.

    이번에는 위 작업을 자동화하는 것으로 matlab에서 키와 체중이 입력된 CSV 파일을 열고 BMI를 계산하여 xlsx로 저장하는 스크립트를 써본다.

    사용할 CSV 파일



    다음과 같은 CSV 파일을 준비했습니다.

    1


    이름
    생년월일
    신장(cm)
    체중(kg)


    hoge huga
    yyyy/m/d
    x
    y


    이것은 적절한 이름 (신장 체중 .csv)으로 저장되었습니다.

    BMI 값을 matlab로 계산



    구현


    clc
    close all
    clear all
    
    path = 'C:\Users\hogehoge';
    file = '身長体重.csv';
    % 名前,生年月日,身長(cm),体重(kg)
    % 桜 衣之,2021/4/4,155,47
    % ...
    filepath = fullfile(path, file);
    
    % ファイルを開いてcellに格納
    T = readcell(filepath,'DatetimeType','text');
    
    % 身長(cm)
    height = cell2mat(T(2:end,3));
    height = height / 100;% 身長(m)に直す
    % 体重(kg)
    weight = cell2mat(T(2:end,4));
    % BMI = 体重kg ÷ (身長m)^2
    BMI = weight ./ (height .^2);
    % cell配列にする
    TBMI = num2cell(BMI);
    TBMI = [{'BMI'}; TBMI];% 1行目を追加
    
    % cellの連結
    Tout = [T TBMI];
    
    % ファイルに書き込む
    [path, file] = fileparts(filepath);
    newFile = sprintf('%s_addBMI.xlsx', file);
    outputFilePath = fullfile(path, newFile);
    writecell(Tout, outputFilePath);
    
    

    추가하려는 열을 cell로 준비하고 readcell에서 읽은 cell에 연결하기 만하면됩니다.

    결과



    결과는 다음과 같습니다. BMI 계산 결과를 추가 할 수있었습니다.


    BMI 값을 Excel로 계산



    이전 섹션에서 BMI 계산 결과를 추가하여 xlsx 파일로 저장할 수있었습니다.
    그러나 원하는 것은 계산 셀의 추가입니다.
    아래 그림과 같이 BMI를 matlab 대신 excel로 계산하고 싶습니다.


    구현


    %(Toutを求めるところまでは上と同じなので中略)
    
    % 計算セルをさらに追加する
    BMI2 = cell(size(TBMI));
    BMI2(1) = {"計算セル"};
    for n = 2:length(BMI2)
        % =D2/(C2/100)^2
        BMI2(n) = {"=D" + n + "/(C" + n + "/100)^2"};
    end
    Tout2 = [Tout BMI2];
    
    % ファイルに書き込む
    [path, file] = fileparts(filepath);
    newFile = sprintf('%s_addBMI.xlsx', file);
    outputFilePath = fullfile(path, newFile);
    writecell(Tout2, outputFilePath,'UseExcel',true);% UseExcelオプションを追加
    

    계산 셀을 추가하는 방법은 【MATLAB】 하이퍼 링크 첨부 텍스트의 Excel에의 기입 자동화을 참조했다.
    그렇게하기 쉽고 수식을 그대로 string에 넣고 출력 할 때 writecellUseExcel 옵션을 붙였다. UseExcel 옵션을 알지 못했습니다.

    또, DC 등의 열명이 하드 코딩이 되고 있지만, 이것이 신경이 쓰이는 경우는 이하등에 열 번호를 엑셀 표기(또는 그 반대)로 변환하는 구현이 있다.
    I need to convert a number into its column name equivalent

    결과



    예상대로 결과가 되었다.
    물론 excel에서 체중과 같은 값을 편집하면 BMI 값도 자동으로 업데이트됩니다.


    요약



    이번에는 matlab에서 계산 셀이 들어있는 excel 파일을 만들었습니다.
    이 상태에서 excel와 화해하고 싶다.



    htps : // 그럼.ぃきぺぢ아. 오 rg/우키/%에3%81%8에%에3%81%아1%에3%81%93%에3%81%BC%에3%82%8C%에3%83%95% 에 3% 83% 에 B% 에 3% 83% BC% 에 3% 83% 84% 에 3% 82% BF% 에 3% 83% 에 B% 에 3% 83% 88 

    좋은 웹페이지 즐겨찾기