0

検索してみましたが、特定の問題には至りませんでした。私は MATLAB にかなり慣れていないので、これは明らかなことかもしれませんが、頭をすり抜けてしまったことに言及しておく必要があります。

5 つのイベントの加速度計記録を含む Excel ファイルがあり、その間にスペースがあります。これらのイベントは、120:250、280:390、430:943 など、指定する必要がある時間 (行) に発生します。

私がやりたいことは、必要なデータをループして抽出し、それを変数に格納して、必要に応じて各イベントに独自の「セクション」があり、各「セクション」に独自のセットが含まれるようにすることですX、Y、Z 加速度計データを含む「サブセクション」。

私の現在のセットアップは手動のもので、次のようになります。

X1 = xlsread('location.xlsx','sheet1','d110:d367');
X2 = xlsread('location.xlsx','sheet1','d367:d631');
X3 = xlsread('location.xlsx','sheet1','d631:d891');
X4 = xlsread('location.xlsx','sheet1','d891:d1134');
X5 = xlsread('location.xlsx','sheet1','d1134:d1361');

Y1 = xlsread('location.xlsx','sheet1','e110:e367');
Y2 = xlsread('location.xlsx','sheet1','e367:e631');
Y3 = xlsread('location.xlsx','sheet1','e631:e891');
Y4 = xlsread('location.xlsx','sheet1','E891:e1134');
Y5 = xlsread('location.xlsx','sheet1','e1134:e1361');

Z1 = xlsread('location.xlsx','sheet1','f110:f367');
Z2 = xlsread('location.xlsx','sheet1','f367:f631');
Z3 = xlsread('location.xlsx','sheet1','f631:f891');
Z4 = xlsread('location.xlsx','sheet1','f891:f1134');
Z5 = xlsread('location.xlsx','sheet1','f1134:f1361');

したがって、それがいかに好ましくないかがわかります。私がやりたいもう1つのことは、最終的に他のデータセットとの相互相関にループを使用することですが、「動的」変数を扱うときのループの性質や、あなたが何を持っているかはわかりません。

今私が考えている方法は、ベクトルなどで行のブロックを指定し、アクティビティごとにループし、次に軸ごとにループすることです。

4

1 に答える 1

0

すべての変数に対して XLSREAD を実行することは、パフォーマンスにとって最適ではありません。この関数は COM インターフェイス (少なくとも Windows では) を使用し、低速です。データがそれほど大きくなく、メモリに収まる場合は、シート全体を一度に一時変数に読み込んでから、値を変数に並べ替える方がよいでしょう。

もう 1 つのアドバイスは、X1、X2 などを使用しないことです。これらの変数をループで使用する場合、問題が発生します。長さが異なる場合はセル配列を作成するため、X{1}、X{2} などになります。

したがって、最初にファイル全体を読み取ります。

data = xlsread('location.xlsx','sheet1','D:F');

すべての数値をデータ化すると、それらがdata行列で取得されます。

手動で入力するか、データから取得できるインデックス。

index = {120:250, 280:390, 430:943};
for ii = 1:numel(index)
    X{ii} = data(index{ii},1);
    Y{ii} = data(index{ii},2);
    Z{ii} = data(index{ii},3);
end
于 2013-03-06T20:26:36.563 に答える