1

我想在 MATLAB 中的 for 循环中创建一个单维数组,请帮助使用以下代码:

count = 0;  
for i=1:10  
arr = count;  
count = count+1;    
end

当我执行这个小代码时,我得到了 9 作为 arr 的结果。

而不是这个我想要一个数组arr,每次迭代i都有10个计数值,请帮助.....

4

3 回答 3

8

在 Matlab 中有几种创建数组的方法。你最常遇到的是

  • 通过范围表达式:

    a = 1 : 10;    % Creates a row vector [1, 2, ... 10]
    a = (1 : 10)'; % Creates a column vector [1, 2, ... 10]^T.
    
  • 通过生成函数:

    a = zeros(1, 10); % Creates a 1x10 (=row vector) containing 10 zeros.
    a = zeros(10, 1); % Creates a 10x1 (=column vector) containing 10 zeros.
    

    其他生成函数是ones创建元素全为 1rand的向量/矩阵,生成具有均匀分布的随机数的向量/矩阵, randn用于具有高斯分布的随机矩阵等。

  • 通过连接(这很,但易于实现,有时无法避免):

    % Create a vector containing the numbers 1, 4, 9, 16, ... 100.
    a = [];
    for idx = 1 : 10
        a = [a, idx^2];   % Creates a row vector.
        % a = [a; idx^2]; % Creates a column vector.
    end
    
  • 通过分配给大于当前大小的数组索引(如果在循环中完成,则再次缓慢):

    % Create a vector containing the numbers 1, 4, 9, 16, ... 100.
    for idx = 1 : 10
        a(idx) = idx^2;
    end
    

    注意:我不确定这是否适用于每个版本的 Matlab。

于 2012-07-20T20:56:55.880 回答
4
arr = zeros(10,1); % to initialize array
count = 0;  
for i=1:10  
arr(i) = count;  
count = count+1;    
end
于 2012-07-20T17:29:50.420 回答
1

为了给数组赋值,你需要告诉matlab你想要它在数组中的哪个位置。

首先,创建一个大小合适的零数组

arr = zeros(1,10);

然后你可以分配给count元素iarr

arr(i) = count;

所以你提供的代码变成了

count = 0;
arr = zeros(1,10);
for i=1:10
    arr(i) = count;
    count = count + 1;
end

当然,正如其他人所提到的,有更简单的方法来完成这项特定任务,例如

arr = 0:9;

哪里0:9是 matlab 简写“包含整数 0 到 9 的行数组”。

于 2012-07-20T17:32:24.217 回答