预分配不工作…

3视图(30天)
Gauthier Briere
Gauthier Briere 2020年2月3日
评论道: 拉吉 2020年2月3日
大家好!
我有点迷失,
今天早上我跑一个代码和pre分配不工作,它改变了我的矩阵大小与任何原因,
所以我做了一个小尝试像这样:
n = 3
x = 0 (1, n);
2 = 1:10
x (ii) = (2);
结束
%
之前我有一个错误,因为规模就超过了…现在的作品,它改变x的大小,如何避免?
最好的问候,
1评论
亚当
亚当 2020年2月3日
Pre-size正确!你pre-size 3然后把它放在一个for循环10 assignging值。你期待下一个7元素从何而来?你没有预先分配的数组生长在循环。

登录置评。

接受的答案

拉吉
拉吉 2020年2月3日
问题是不清楚。你在这里想做什么?pre分配好工作。你可以检查它在代码中通过将断点。循环仅仅覆盖pre分配矩阵。如果你想要停止循环当执行到达预先分配矩阵尺寸然后使用这样的:
n = 3
x = 0 (1, n);
temp =长度(x);
2 = 1:10
x (ii) = (2);
如果2 = = temp
打破
结束
结束
%
4评论
拉吉
拉吉 2020年2月3日
谢谢你的解释!

登录置评。

答案(1)

Gauthier Briere
Gauthier Briere 2020年2月3日
这就是我的观点!之前我通常有一个错误说指数超过矩阵的大小。
如果我做这个例子
n = 3;
m = 9;
x = 0 (n, m);
2 = 1:n
jj = 1: m
x (ii, jj) = 2;
结束
结束
你改变的:
n = 3;
m = 9;
x = 0 (n, m);
2 = 1:n
jj = 1:240151
x (ii, jj) = 2;
结束
结束
它将改变x的大小是很奇怪,因为之前从未改变大小....
3评论
Gauthier Briere
Gauthier Briere 2020年2月3日
好吧我想我明白了,谢谢你的帮助,我只是误解了

登录置评。

类别

找到更多的在性能和内存帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!