ジョージの技術備忘録

参考したサイトを忘れないための備忘録

Excelからデータを読み出す(Matlab)

Excelからデータを読み出して、行列のデータを列に変換したいなぁと思いましてちょいと書いてみました。

詳細はMatlab公式サイトを参照して下さい。
ワークシートまたは範囲のインポート - MATLAB & Simulink - MathWorks 日本

clear all
close all
%読み込むエクセルのファイル指定
filename = 'Book1.xlsx';
%読み込むファイルのシート指定
sheet = 'Sheet1';
%なくてもいいかな。
[type, sheets] = xlsfinfo(filename);
[num,headertext] = xlsread(filename,sheet);

%エクセルの範囲指定
xlrange= 'A2:D4';
A = xlsread(filename,sheet,xlrange);

%エクセルの範囲指定
xlrange= 'A5:D11';
B = xlsread(filename,sheet,xlrange);

%行列Bの行数と列数
[bx,by]=size(B);
%行列を列に変換
L=bx*by;
b=zeros(L,1);
k=1;
for j = 1:by
    for i = 1:bx
        b(k) = B(i,j);
    k=k+1;
    end
end
%列をmatファイルとして保存
save b.mat

csvreadも似たような感じ
初心者によるMATLABメモ|CSV形式のデータの読み書き

clear all
close all
%読み込むエクセルのファイル指定
filename = 'sample.csv';
%csvの範囲設定
%行のオフセットR1~R2
%列のオフセットC1~C2
R1=1;
C1=0;
R2=1;
C2=3;
A = csvread(filename,R1,C1,[R1, C1, R2, C2]);

%csvの範囲設定
%行のオフセットR1~R2
%列のオフセットC1~C2
R1=3;
C1=0;
R2=9;
C2=3;
B = csvread(filename,R1,C1,[R1 C1 R2 C2]);

%行列Bの行数と列数
[bx,by]=size(B);
%行列を列に変換
L=bx*by;
b=zeros(L,1);
k=1;
for j = 1:by
    for i = 1:bx
        b(k) = B(i,j);
    k=k+1;
    end
end
%列をmatファイルとして保存
save b.mat

dlmreadも同様
数値データの ASCII 区切りファイルを行列に読み込む - MATLAB dlmread - MathWorks 日本