Arrays 为单元阵列中的矩阵赋值-MATLAB

Arrays 为单元阵列中的矩阵赋值-MATLAB,arrays,matlab,indexing,assign,Arrays,Matlab,Indexing,Assign,我试图给一个矩阵赋值,这个矩阵在循环中是一个数组元素。然而,我被告知下标索引必须是实正整数或逻辑。但正如您从下面的脚本中看到的,在实际使用之前,我已经阅读了每个索引的输出,每个索引都是实正整数 错误由第一个循环语句fundMoments{1,i}((计数帧(j)+1),meanCol)=均值(基金(计数帧(j)+1:count))-我已经使用脚本中定义的输入单独运行了行的左侧,它正确地告诉我数组中矩阵中的值为零。但是,整个生产线没有运行 你知道我哪里做错了吗 在代码的某些上下文中,我试图计算移动

我试图给一个矩阵赋值,这个矩阵在循环中是一个数组元素。然而,我被告知
下标索引必须是实正整数或逻辑。
但正如您从下面的脚本中看到的,在实际使用之前,我已经阅读了每个索引的输出,每个索引都是实正整数

错误由第一个循环语句
fundMoments{1,i}((计数帧(j)+1),meanCol)=均值(基金(计数帧(j)+1:count))-我已经使用脚本中定义的输入单独运行了行的左侧,它正确地告诉我数组中矩阵中的值为零。但是,整个生产线没有运行

你知道我哪里做错了吗

在代码的某些上下文中,我试图计算移动平均值(但不仅是移动平均值,还有移动标准偏差等等)。
frame
的值是所考虑的移动时间窗口的长度<代码>基金
是一个约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

如注释中所述,将值分配给
mean
时会出现问题

之后,它是一个变量,但asker希望它仍然是一个函数


我相信这也会通过,from.

尝试
uint32(计数帧(j)+1)
而不是
count帧(j)+1
发现,它不起作用-无论如何,谢谢。这是
mean
的功能吗,
mean
?因为你在代码的前面用一个变量覆盖了它。它使用得很糟糕,没错-我现在把它改成了just
avg
,但是我早就检查过它,看它是否有干扰,但它没有,现在在任何地方都做了更改,我仍然得到了相同的错误消息-虽然很好,谢谢!后来我发现了这个链接——它有一个类似的问题,并且表明我的索引应该是正确的——所以一定是下标索引没有被识别为数字……它不起作用,因为你在
基金中用实值下标矩阵
平均值
(计数帧(j)+1:count)
。下标必须与错误消息描述的一致。