我想在MATLAB里面创建一个单维数组for循环,请帮助下面的代码:
count = 0;
for i=1:10
arr = count;
count = count+1;
end
当我执行这个小代码时,我得到9作为arr的结果。
而不是这个我希望有一个数组arr,每次迭代我有10个计数值,请帮助.....
答案 0 :(得分:7)
有几种方法可以在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
来创建元素所在的向量/矩阵
全1,rand
生成具有均匀分布随机数的向量/矩阵,
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。
答案 1 :(得分:4)
arr = zeros(10,1); % to initialize array
count = 0;
for i=1:10
arr(i) = count;
count = count+1;
end
答案 2 :(得分:1)
为了给数组赋值,你需要告诉matlab你希望它在数组中的位置。
首先,使用
创建一个大小合适的零数组arr = zeros(1,10);
然后,您可以{/ 1}}将count
分配给i
的元素arr
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
是'包含0到9整数的行数组'的简写。