技術共有

Matlab での Excel データの抽出と処理の実践例

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

達成された目標

Excel データの量が膨大になると、手動でのデータ処理は非常に面倒な作業となり、エラーや憂鬱が発生しやすくなります。

matlab を使用して処理すると、シンプルかつ効率的な方法になります。

たとえば、GD32F7xx シリーズのピン多重化テーブルを例として、169x19 の Excel テーブルでは次のようになります。

UART7_RXの対応するすべてのピンとAF値を素早く取得し、配列形式で情報を出力する方法。

関連関数の紹介: xlsread

xlsread 数学ソフトですマトラボ読み込むエクセルファイル内のデータの関数。つまり、現在のプログラムが存在するフォルダーから、関数内のパラメーターで指定された範囲に従って、セルからファイルを読み込んでデータを返します。

1num = xlsread('ファイル名')

たとえば、指定したフォルダーから読み取ります。num=xlsread('data.xls'),つまり、現在のプログラムが存在するフォルダーから、A1セルが読み取りを開始し、読み取りを開始しますデータ.xlsファイルを作成してデータを返す番号

2num = xlsread('ファイル名','シート')
を選択シート、 例えば'シート1'

3num = xlsread('ファイル名', '範囲')
たとえば、それが配置されているセル範囲範囲='A1:A8'

4num = xlsread('ファイル名', 'シート', '範囲')
シート
セル範囲も同時に制限されます。

5[数値、txt] = xlsread('ファイル名'、…)
返されたデータをテキストとは別に保存します。

6[数値、txt、raw] = xlsread('ファイル名'、…)
別々に保存すると、番号そしてTXTに保存、単一の変数を形成します。

で、番号は数値変数と行列です。TXTは文字変数とセル配列です。数値変数と文字変数の両方が含まれます。セルの配列です。

関連機能の紹介:strcmp関連

1.strcmp(s1, s2): 文字列 s1 と s2 が等しいかどうかを比較するために使用され、等しい場合は結果 1 を返し、そうでない場合は 0 を返します。

例えば:

TF=strcmp(s1,s2);

s1 と s2 は文字列です (例: s1='hello'、s2='matlab')。

s1 と s2 が一致する場合、戻り値 TF=1、一致しない場合、TF=0 が返されます。

TF=strcmp(s,c);

s は文字列、c はセル配列、c の要素はすべて文字列です (例: s='hello', c={'hello','matlab';'HELLO','matlab'})。

戻り値 TF は c と同じ長さの配列で、TF の要素は 1 または 0 です。

c の各要素を s と比較し、一致する場合は TF の対応する位置の要素は 1、一致しない場合は 0 になります。

TF=strcmp(c1,c2);

c1 と c2 は両方ともセル配列であり、それらの要素はすべて同じ文字列です (例: c1={'hello','matlab';'HELLO','matlab'};c2={'hello' )。 'MATLAB';'こんにちは','MATLAB'};

戻り値 TF は c1 または c2 と同じ長さの論理配列で、TF の要素は 1 または 0 です。

c1 と c2 の対応する位置の要素を比較し、一致していれば TF の対応する位置の要素は 1、そうでない場合は 0 になります。

2.strncmp(s1, s2, n): 文字列 s1 と s2 の最初の n 文字が等しいかどうかを比較するために使用され、等しい場合は結果は 1、そうでない場合は 0 になります。

3.strcmpi(s1, s2): 文字列の大文字と小文字を無視して、文字列 s1 と s2 が等しいかどうかを比較し、等しい場合は結果 1 を返し、そうでない場合は 0 を返します。

4.strncmpi(s1, s2, n): 文字列の大文字と小文字を無視する前提で、文字列 s1 と s2 の最初の n 文字が等しいかどうかを比較し、等しい場合は結果 1 を返し、そうでない場合は結果を返します。 0.

実践例

1. 出力配列を定義し、Excel ファイルの内容を抽出して、txt 配列を生成します。

  1. >> OUTPUT=cell(10,2);
  2. >> [~,txt] = xlsread('D:aaabbbccc.xlsx');

この時点で、変数が表示されます。

2. 変換関数を編集します。

すべての内容を走査および比較して、UART7_RX の対応するすべてのピンと AF 値を見つけ、情報を配列形式で出力します。

  1. function OUTPUT=excel_read(specified_txt)
  2. [~,txt] = xlsread('D:aaabbbccc.xlsx');
  3. m = 1;
  4. OUTPUT=cell(10,2);
  5. for i=1:169
  6.     for j=1:19
  7.         if strcmp(txt(i,j),specified_txt)
  8.             OUTPUT(m,1)=txt(i,1);
  9.             OUTPUT(m,2)=txt(1,j);
  10.             m=m+1;
  11.         end
  12.     end
  13. end
  14. end

3. 関数を呼び出します。

>> OUTPUT=excel_read('UART7_RX')

次の結果が得られます。

つまり、UART7_RX の対応するすべてのピンと AF 値の情報を配列形式で出力します。