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

조회 수: 8 (최근 30일)
Tatsuya Onishi
Tatsuya Onishi 2021년 12월 15일
댓글: Tatsuya Onishi 2021년 12월 22일
環境: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에서 Matrix Indexing에 대해 자세히 알아보기

태그

제품


릴리스

R2021a

Community Treasure Hunt

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

Start Hunting!