nou*_*fal 3 matlab for-loop matrix
这是继续我的问题 从现有矩阵中提取矩阵
现在我用代码分离这些矩阵(不正确!)
for i = 3:-1:0
mat = m((sum((m == 0), 2)==i),:)
end
Run Code Online (Sandbox Code Playgroud)
以上部分是我原来问题的更新,我
想相应地命名,比如
mat1
mat2
mat3
mat4
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议一个简单的方法吗?
Sha*_*hai 10
关注@Jonas和@ Clement-J.的提议,以下是玩具使用cells和structs的方式:
N = 10; % number of matrices
cell_mat = cell(1, N); % pre allocate (good practice)
for ii = 1 : 10
cell_mat{ii} = rand( ii ); % generate some matrix for "mat"
struct_mat.( sprintf( 'mat%d', ii ) ) = rand( ii );
end
Run Code Online (Sandbox Code Playgroud)
关于结构(好处可变字段名)是你可以save它
save('myMatFile.mat','struct_mat',' - struct');
你会在-file中有变量mat1...... 凉!mat10mat
一些好的编码实践:
在Matlab中预分配矩阵和数组.在循环中更改变量大小确实会降低Matlab的速度.
不要使用i和j作为循环变量(或根本不作为变量),因为它们被sqrt(-1)Matlab使用.
为什么变量名变量?你需要有一个非常好的理由这样做!请描述一下你想要达到的目标,我相信你会在这里获得更好,更优雅的解决方案......