首页 > 解决方案 > 高频数据matlab上的特征选择

问题描述

我有 1 年的 50Hz 数据(风力涡轮机),大约 100gb。10 分钟文件,每个文件有大约 70 个传感器文件。每个传感器变量都有大约 30.000 个数据。

我正在尝试对这些数据应用特征选择方法。到目前为止起作用的是当我合并例如 10 个传感器时,我认为它们对因变量有影响。我最终得到一个由 10 个变量组成的矩阵,每个变量有 30.000 次,比如说 6 个文件,所以 180.000。在这里,我只评估了一整年的一小时数据。

是否有可能使用特征选择方法评估我的所有数据?

%此脚本从工作区读取所有数据并合并来自%不同文件的数据。创建了一组变量:因变量 - A/A1 % 和自变量 res_biege 以供进一步工作

xliste = dir('*.mat'); %dateiinformationen werden ge-speichert 
xanzahldateien = numel(xliste); % Anzahl der gefun-denen .mat dateien 
xnamederdatei =  {xliste.name}; % alle dateinamen im Ordner werden im Array gespeichert

C_Bieg1_060_240_merge = [];
Generatordrehzahl_Anlagengeno_merge = [];
Generatordrehzahl_Triebstrang_merge = [];
Pitchwinkel_Blatt1_merge = [];
Rotordrehzahl_merge = [];
Turmschwingung_X_merge = [];
Turmschwingung_Y_merge = [];
Windgeschwindigkeit_Gondel_merge = [];
Windrichtung_relativ_merge = [];
Wirkleistung_merge = [];
C_Bieg2_150_330_merge = [];


for k=1:1:length(xliste)-1 %Einlesen der daten aus dem Ordner 
load(xnamederdatei{k}); % öffnen der dateien
%cut all sensor values into one vector
C_Bieg1_060_240_merge = vertcat(C_Bieg1_060_240_merge, C_Bieg1_060_240);
C_Bieg2_150_330_merge = vertcat(C_Bieg2_150_330_merge, C_Bieg2_150_330);
Generatordrehzahl_Anlagengeno_merge = vertcat(Generatordrehzahl_Anlagengeno_merge,Generatordrehzahl_Anlagengeno);
Generatordrehzahl_Triebstrang_merge = vertcat(Generatordrehzahl_Triebstrang_merge,Generatordrehzahl_Triebstrang);
Pitchwinkel_Blatt1_merge = vertcat(Pitchwinkel_Blatt1_merge,Pitchwinkel_Blatt1);
Rotordrehzahl_merge = vertcat(Rotordrehzahl_merge,Rotordrehzahl);
Turmschwingung_X_merge = vertcat(Turmschwingung_X_merge,Turmschwingung_X);
Turmschwingung_Y_merge = vertcat(Turmschwingung_Y_merge,Turmschwingung_Y);
Windgeschwindigkeit_Gondel_merge = vertcat(Windgeschwindigkeit_Gondel_merge,Windgeschwindigkeit_Gondel);
Windrichtung_relativ_merge = vertcat(Windrichtung_relativ_merge,Windrichtung_relativ);
Wirkleistung_merge = vertcat(Wirkleistung_merge,Wirkleistung);

end
% clear the workspace except needed variables
clearvars -except C_Bieg1_060_240_merge C_Bieg2_150_330_merge Generatordrehzahl_Anlagengeno_merge Generatordrehzahl_Triebstrang_merge Pitchwinkel_Blatt1_merge Rotordrehzahl_merge Turmschwingung_X_merge Turmschwingung_Y_merge Windgeschwindigkeit_Gondel_merge Windrichtung_relativ_merge Wirkleistung_merge
%cutting down vectors to the same length
C_Bieg1_060_240_merge = C_Bieg1_060_240_merge(1:150000);
C_Bieg2_150_330_merge = C_Bieg2_150_330_merge(1:150000);
Generatordrehzahl_Anlagengeno_merge = Generatordrehzahl_Anlagengeno_merge(1:150000);
Generatordrehzahl_Triebstrang_merge = Generatordrehzahl_Triebstrang_merge(1:150000);
Pitchwinkel_Blatt1_merge = Pitchwinkel_Blatt1_merge(1:150000);
Rotordrehzahl_merge = Rotordrehzahl_merge(1:150000);
Turmschwingung_X_merge = Turmschwingung_X_merge(1:150000);
Turmschwingung_Y_merge = Turmschwingung_Y_merge(1:150000);
Windgeschwindigkeit_Gondel_merge = Windgeschwindigkeit_Gondel_merge(1:150000);
Windrichtung_relativ_merge = Windrichtung_relativ_merge(1:150000);
Wirkleistung_merge = Wirkleistung_merge(1:150000);

%avereging every 5 values
C_Bieg1_060_240_merge = nanmean(reshape( [C_Bieg1_060_240_merge(:);nan(mod(-150000,50),1)],50,[]))';
C_Bieg2_150_330_merge = nanmean(reshape( [C_Bieg2_150_330_merge(:);nan(mod(-150000,50),1)],50,[]))';
Generatordrehzahl_Anlagengeno_merge = nanmean(reshape( [Generatordrehzahl_Anlagengeno_merge(:);nan(mod(-150000,50),1)],50,[]))';
Generatordrehzahl_Triebstrang_merge = nanmean(reshape( [Generatordrehzahl_Triebstrang_merge(:);nan(mod(-150000,50),1)],50,[]))';
Pitchwinkel_Blatt1_merge = nanmean(reshape( [Pitchwinkel_Blatt1_merge(:);nan(mod(-150000,50),1)],50,[]))';
Rotordrehzahl_merge = nanmean(reshape( [Rotordrehzahl_merge(:);nan(mod(-150000,50),1)],50,[]))';
Turmschwingung_X_merge = nanmean(reshape( [Turmschwingung_X_merge(:);nan(mod(-150000,50),1)],50,[]))';
Turmschwingung_Y_merge = nanmean(reshape( [Turmschwingung_Y_merge(:);nan(mod(-150000,50),1)],50,[]))';
Windgeschwindigkeit_Gondel_merge = nanmean(reshape( [Windgeschwindigkeit_Gondel_merge(:);nan(mod(-150000,50),1)],50,[]))';
Windrichtung_relativ_merge = nanmean(reshape( [Windrichtung_relativ_merge(:);nan(mod(-150000,50),1)],50,[]))';
Wirkleistung_merge = nanmean(reshape( [Wirkleistung_merge(:);nan(mod(-150000,50),1)],50,[]))';
%Create a table for correlation analysis & array (matrix)
res_biege = sqrt(C_Bieg1_060_240_merge.^2 + C_Bieg2_150_330_merge.^2);
T = table(res_biege , Generatordrehzahl_Anlagengeno_merge, Generatordrehzahl_Triebstrang_merge, Pitchwinkel_Blatt1_merge, Rotordrehzahl_merge, Turmschwingung_X_merge, Turmschwingung_Y_merge, Windgeschwindigkeit_Gondel_merge, Windrichtung_relativ_merge, Wirkleistung_merge);
A = table2array(T);
A1 = table2array(table(Generatordrehzahl_Anlagengeno_merge, Generatordrehzahl_Triebstrang_merge, Pitchwinkel_Blatt1_merge, Rotordrehzahl_merge, Turmschwingung_X_merge, Turmschwingung_Y_merge, Windgeschwindigkeit_Gondel_merge, Windrichtung_relativ_merge, Wirkleistung_merge));
R = corrcoef(A)

标签: matlabbigdatafeature-selection

解决方案


推荐阅读