- 上記の値が96735 を超えた事実がある事は間違いない
- mrk==kの合致数は最大24個だがおそらく常に1個
- なのでwnd'(125~875の1×751 double)にmrk==kがヒットしたインデックス(1~24)が加算される(最大値は899)
- kの範囲を1:2より増やしても上記は同様、どう考えても96735どころか899を超えない
”位置 1 のインデックスが配列範囲を超えています” というエラー表示の原因
12 次查看(过去 30 天)
显示 更早的评论
環境: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
2021-12-15
zipに圧縮すればここのライブスクリプトにアップロードして実行できました。
しかし、やはりファイルを開く事が出来ません。
また、文章中には"csp_dataset_train.mat”、ダウンロード可能なファイル名は"csp_dataset_test.mat”と異なる事に気付きましたが、意図したデータファイルですか?
unzip('csp_dataset_test.zip');
load('csp_dataset_test.mat');
回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Biomedical Signal Processing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!