相关疑难解决方法(0)

变量似乎在每次循环迭代时改变大小 - 什么?

在编写以下Matlab代码时:

for ii=1:n
    x(ii) = foo( ii ); % foo is some function of ii that cannot be vectorized.
end
Run Code Online (Sandbox Code Playgroud)

我得到以下m-lint警告:

变量x似乎在每次循环迭代时改变大小

我的问题:

  1. 这个警告意味着什么?
  2. 为什么每次迭代都会改变变量大小是件坏事?
  3. 怎样才能解决这个问题?

这个问题是不能重复的这一个,因为它与预分配的更一般的问题,而是它的一个特定实例涉及.

iteration matlab memory-management

9
推荐指数
3
解决办法
2万
查看次数

考虑预先分配速度

我正在做以下事情

for i = 1:m,
    index = 0;
    for j = 1:n,
        index = index+values(i,j)*2^(j-1);
        if (j==1)
            symbol_chip = chip_values(index+1,:);
        else
            symbol_chip = [symbol_chip chip_values(index+1,:)];
        end
    end
end
Run Code Online (Sandbox Code Playgroud)

它告诉我以下内容:

symbol_chip可能会在循环中成长.考虑预先分配速度.

有任何想法吗?

matlab memory-management

6
推荐指数
1
解决办法
1万
查看次数

如何平均矩阵中每行的每n列?

所以我有一个月回报矩阵,形式为1000x300.我想获取返回矩阵中每行的每12列的平均值,以给出年度回报,最终将导致1000x25矩阵.

我将如何在Matlab中执行此操作?

通过一些快速搜索,我相信我可以以某种方式使用重塑函数,但我无法弄清楚如何在我的代码循环中实现它.

到目前为止,这是我的尝试.

for i = 1:25
Strategy1.MeanReturn(:,i) = mean(Data.Return(:,i+1):Data.Return(:,i*12+1));
end
Run Code Online (Sandbox Code Playgroud)

Fyi,+1就在那里,因为我忽略了矩阵的第一列.

但这导致我得到一个单一的NaN值.

matlab matrix mean

5
推荐指数
4
解决办法
1547
查看次数

MATLAB矩阵预分配比动态矩阵扩展慢

在循环的每次迭代中,我正在计算MATLAB矩阵.这些矩阵必须连接在一起以创建一个最终矩阵.在进入循环之前我知道这个最终矩阵的维数,所以我使用'零'函数预先分配矩阵比初始化一个空数组要快,然后在循环的每次迭代中简单地附加子数组.奇怪的是,当我预分配时,我的程序运行得慢得多.这是代码(只有第一行和最后一行不同):

这很慢:

w_cuda = zeros(w_rows, w_cols, f_cols);

for j=0:num_groups-1

    % gets # of rows & cols in W. The last group is a special
    % case because it may have fewer than max_row_size rows
    if (j == num_groups-1 && mod(w_rows, max_row_size) ~= 0)
        num_rows_sub = w_rows - (max_row_size * j);    
    else
        num_rows_sub = max_row_size;
    end;

    % calculate correct W and f matrices
    start_index = (max_row_size * j) + 1;
    end_index = start_index + num_rows_sub - 1;

    w_sub = W(start_index:end_index,:);
    f_sub …
Run Code Online (Sandbox Code Playgroud)

memory arrays performance matlab memory-management

2
推荐指数
1
解决办法
1318
查看次数