루프를 통과하는 동안 배열 요소 인 행렬에 값을 할당하려고합니다. 그러나 나는 그 말을 듣고있다 Subscript indices must either be real positive integers or logicals.
하지만 아래의 스크립트에서 볼 수 있듯이 실제로 사용되기 전에 각 인덱스에 대한 출력을 읽었고 각 인덱스는 실제 양의 정수입니다.셀 배열의 행렬에 값 할당 - MATLAB
오류는 첫 번째 루프 문 fundMoments{1,i}((count-frame(j)+1), meanCol) = mean(fund(count-frame(j)+1:count));
에 의해 생성됩니다 - 나는 스크립트에서 정의 된 입력과 함께 라인의 왼쪽면을 단독으로 실행했으며 배열의 행렬에 보관 된 값이 올바르게 표시됩니다. 0입니다. 그러나 전체 라인이 실행되지 않습니다.
내가 여기에 잘못 가고있는 아이디어가 있습니까?
코드에 대한 일부 컨텍스트 - 이동 평균 (그러나 이동 평균뿐만 아니라 이동 표준, 편차 등)을 계산하려고합니다. frame
의 값은 이동 시간 창을 고려한 길이입니다. funds
은 ~ 2500x8 배가 매트릭스입니다.
frame = [252 504 756]; % the time frame to be used for moving averages
funds = funds_ROR; %matrix with the returns of all funds
meanCol = 1;
st_devCol = 2;
skewCol = 3;
kurtCol = 4;
%for f = 1:length(frame)
mean = zeros(length(funds) - frame(1), 1);
st_dev = zeros(length(funds) - frame(1), 1);
skew = zeros(length(funds) - frame(1), 1);
kurt = zeros(length(funds) - frame(1), 1);
vectLength = length(mean); % all the four vectors must be of the same length, so we only need use one
fundMoments = {[mean st_dev skew kurt], [mean st_dev skew kurt], [mean st_dev skew kurt], [mean st_dev skew kurt], [mean st_dev skew kurt], [mean st_dev skew kurt], [mean st_dev skew kurt], [mean st_dev skew kurt]};
for i = 1:1:8
fund = funds_ROR(:,i);
for j = 1:length(frame)
for count = frame(j):length(fund)
fund
count
frame_j = frame(j)
meanCol
fund(count-frame(j)+1:count)
fundMoments{1,i}((count-frame(j)+1), meanCol) = mean(fund(count-frame(j)+1:count));
fundMoments{1,i}(count-frame(j)+1, st_devCol) = std(fund(count-frame(j)+1:count));
fundMoments{1,i}(count-frame(j)+1, skewCol) = mean(fund(count-frame(j)+1:count));
fundMoments{1,i}(count-frame(j)+1, kurtCol) = mean(fund(count-frame(j)+1:count));
% fund_kurt = kurtosis(1:1:frame(j));
% date = time_series(frame(j):end);
% figure(frame(j))
% plot(date, fundMoments, date, fund_kurt)
% header = ['Skew and Kurtosis - ', frame, ' moving average'];
% title(header)
% legend('Skew', 'Kurtsosis')
% set(gcf, 'YLim', max(max(fundMoments), max(fund_kurt)))
end
end
end
'count-frame (j) +1 '대신에'uint32 (count-frame (j) +1)'시도해보십시오 –
어쨌든 작동하지 않았습니다. –
'mean'은 함수라는 뜻입니까,'mean'입니까? 왜냐하면 코드의 앞부분에 변수를 겹쳐 쓰고 있기 때문입니다. – nkjt