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

12 次查看(过去 30 天)
Tatsuya Onishi
Tatsuya Onishi 2021-12-15
環境: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 个评论
Atsushi Ueno
Atsushi Ueno 2021-12-15
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 2021-12-22
おっしゃる通りmrkに原因がありました。
mrkファイル内の数値に問題があり、それ修正することで実行できました!助言していただき、ありがとうございました!!

请先登录,再进行评论。

回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Biomedical Signal Processing 的更多信息

标签

产品


版本

R2021a

Community Treasure Hunt

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

Start Hunting!