xs_g 2020-06-03 08:53 采纳率: 0%
浏览 185

Matlab显示??? Subscript indices must either be real positive integers or logicals小白跪求大神指导

lf1=0.04; %define lf,hf
lf2=0.15;
hf1=0.40;
N1=0;
N2=0;
N3=0;
N4=0;
nfft1=0;
N5=0;
N6=0;
rr=[1.0898
0.9551
1.0996
0.5176
1.1094
1.1953
1.2578
0.6211
1.248
1.1562
0.6387
0.5566
1.2168
0.5508
1.2285
1.125
0.5742
1.2266
0.5664
1.1934
0.5605
1.1836
0.5625
1.2129
0.623
1.2344
0.5859
1.1348
1.1914
1.125
1.1348
0.5801
0.582
0.5547
0.6133
1.082
0.5762
1.127
1.1797
0.5645
1.0234
0.4766
0.6387
0.5918
0.5879
0.6816
0.6641
0.6602
1.2988
1.2305
0.5625
1.207
0.5586
1.1836
1.1602
0.5898
1.1426
0.5781
1.1602
0.5371
1.1504
0.5273
0.5625
1.0918
0.5898
1.1758
0.5801
1.0469
0.3965
0.3809
0.4102
1.1094
1.0527
1.1113
0.582
1.2012
1.2305
0.6113
1.2617
0.5508
1.2891
1.2793
0.6074
1.1738
0.627
1.1895
0.6348
1.2031
1.1172
0.5195
1.1934]; %导入rr间期数据
nfft=length(rr);%数据长度
Fs=1;%采样率为1

%detrend result not required,we should do it later
%rr = detrend(rr,'constant');

%以五分钟为窗口,10s平移所得数据
lf_interval=0; %lf区间序列
hf_interval=0; %hf区间序列
win=300; %窗宽,取5分钟窗口
trans_win=0; %窗口长度
win_start=0; %窗口起始和结束位置
win_last=0;
win_pos=0; %窗口移动
k=0;%移动指针
l_mov=0;%移动指针
m_mov=0;
n_mov=0;
rr_maxpoint=0; %最大的打点数目
win_int=10; %以10秒开始平移
%先求出最大打点数目
for k=nfft:-1:nfft-600
trans_win=trans_win+rr(k);
if trans_win>=win
rr_maxpoint=k;
break;
end

end

trans_win=0;
%得到第一个5分钟窗口
for k=1:800
trans_win=trans_win+rr(k);
if trans_win>=win
win_start=1;
win_last=k;
break;
end

end

rr_win=0; %平移窗口长度
trans_win=0;
rr_seq=[win_start,win_last]; %窗口的第一个序列数值

%对原始数据进行补充,用于点的选择
rr1=rr;
rr_rep=repmat(0,600,1);
rr=[rr;rr_rep];

for k=1:rr_maxpoint
for l_mov=win_start:win_start+20 %平移十秒起始点
rr_win=rr_win+rr(l_mov);
if rr_win>=win_int
win_start=l_mov+1;%加1是10秒平移,不加1是九秒平移
break;
end
end

for m_mov=win_start:win_start+600 %平移十秒5分钟窗口结束点
trans_win=trans_win+rr(m_mov);
if trans_win>=win
win_last=m_mov;
break;
end

end
if win_start>=rr_maxpoint
k=rr_maxpoint;
break;
else
trans_win=0;
rr_win=0;
rr_seq=[rr_seq;win_start,win_last];
end
end

lf_sequence=[];
hf_sequence=[];
rr=rr1;
mov_length=size(rr_seq);
fft_length=mov_length(1);

%detrend result not required,we should do it later
%rr = detrend(rr,'linear');
rr = detrend(rr,'constant');

for k=1:fft_length
N5=rr_seq(k,1);
N6=rr_seq(k,2);
rr2=rr(N5:N6);
nfft1=length(rr2);
noverlap=round(nfft1/2);
[Pxx1,f1]=pwelch(rr2,hamming(nfft1),noverlap,nfft1,Fs);
Pxx1=Pxx1*1000;%s2换成ms2
freq_length1=length(f1);

%计算各段的区间
for i=1:freq_length1
if f1(i)==lf1
N1=i;
break;
end
if f1(i)>lf1
N1=i-1;
break;
end
end

for i=1:freq_length1
if f1(i)==lf2
N2=i;
break;
end
if f1(i)>lf2
N2=i-1;
break;
end
end
N3=N2+1;

for i=1:freq_length1
if f1(i)==hf1
N4=i;
break;
end
if f1(i)>hf1
N4=i-1;
break;
end
end

%计算各段之间LF,HF功率谱
psdlf1=0;
psdhf1=0;
for i=N1:N2
psdlf1=psdlf1+Pxx1(i);
end

for i=N3:N4
psdhf1=psdhf1+Pxx1(i);
end
%lf,hf序列
lf_sequence=[lf_sequence;psdlf1];
hf_sequence=[hf_sequence;psdhf1];
end
??? Subscript indices must either be real positive integers or logicals.

图片说明这里的导入代码要怎么写呢?

  • 写回答

1条回答 默认 最新

  • zqbnqsdsmd 2020-06-05 15:24
    关注
    评论

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料