”位置 1 のインデックスが配列範囲を超えています” というエラー表示の原因

11 vues (au cours des 30 derniers jours)
Tatsuya Onishi
Tatsuya Onishi le 15 Déc 2021
Commenté : Tatsuya Onishi le 22 Déc 2021
環境:windows10, MATLAB2021a
csp_dataset_train.matはサイズが大きすぎるため、driveにて共有させていただきます。
load('csp_dataset_train.mat')
% 定義
flt = @(f)(f>7&f<30).*(1-cos((f-(7+30)/2)/(7-30)*pi*4)); %バンドパスフィルタ
EEG = single(cnt);
Fs = 250; % サンプリング周波数
mrk = sparse(1,pos,(y+3)/2); % エポック設定
wnd0 = [0.5 3.5]; % 時間窓の設定
nof = 3; % 特徴ベクトル
n = 200; % 時間フィルタ
[t,c] = size(EEG);
FLT = real(ifft(fft(EEG).*repmat(flt(Fs*(0:t-1)/t)',1,c)));
wnd = round(Fs*wnd0(1)):round(Fs*wnd0(2));
for k=1:2
% エラー箇所
EPO{k} = FLT(repmat(find(mrk == k),length(wnd),1) + repmat(wnd',1,nnz(mrk == k)),:);
end
csp_dataset_train.matの内容
cnt : 96735 × 25 double
fs : 250
pos : 1×24 double
y : 1×24 double
上記のファイルから、データを読み込んで計算するのですが、コード内のfor文においてエラーが出ます。エラー内容は以下の通りです。
位置 1 のインデックスが配列範囲を超えています (96735 を超えてはならない)
エラー: errorcheck (18)
EPO{k} = FLT(repmat(find(mrk == k),length(wnd),1) + repmat(wnd',1,nnz(mrk == k)),:);
よろしくお願いします。
  3 commentaires
Atsushi Ueno
Atsushi Ueno le 15 Déc 2021
zipに圧縮すればここのライブスクリプトにアップロードして実行できました。
しかし、やはりファイルを開く事が出来ません。
また、文章中には"csp_dataset_train.mat”、ダウンロード可能なファイル名は"csp_dataset_test.mat”と異なる事に気付きましたが、意図したデータファイルですか?
unzip('csp_dataset_test.zip');
load('csp_dataset_test.mat');
Error using load
Unable to read MAT-file /users/mss.system.ZNs003/csp_dataset_test.mat. File might be corrupt.
Tatsuya Onishi
Tatsuya Onishi le 22 Déc 2021
おっしゃる通りmrkに原因がありました。
mrkファイル内の数値に問題があり、それ修正することで実行できました!助言していただき、ありがとうございました!!

Connectez-vous pour commenter.

Réponses (0)

Catégories

En savoir plus sur Biomedical Signal Processing dans Help Center et File Exchange

Tags

Produits


Version

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!