这是我的问题 从现有矩阵中提取矩阵的延续
现在我通过代码将这些矩阵分开(不正确!)
for i = 3:-1:0
mat = m((sum((m == 0), 2)==i),:)
end
以上部分是对我原来的问题的更新,
我想相应地命名它,比如
mat1
mat2
mat3
mat4
有人可以建议一个简单的方法吗?
这是我的问题 从现有矩阵中提取矩阵的延续
现在我通过代码将这些矩阵分开(不正确!)
for i = 3:-1:0
mat = m((sum((m == 0), 2)==i),:)
end
以上部分是对我原来的问题的更新,
我想相应地命名它,比如
mat1
mat2
mat3
mat4
有人可以建议一个简单的方法吗?
根据@Jonas 和@Clement-J. 的建议,以下是玩具如何使用cell
s 和struct
s:
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
结构(带有变量字段名称)的好处是你save
可以
保存('myMatFile.mat','struct_mat','-struct');
并且您将在-file中有变量mat1
,... !凉爽的!mat10
mat
一些好的编码实践:
在 Matlab 中预分配矩阵和数组。在循环内更改变量大小确实会减慢 Matlab 的速度。
不要将i
and用作循环变量(或根本用作变量),因为它们被Matlabj
用作。sqrt(-1)
为什么要使用带有变量名的变量?你需要有一个非常好的理由这样做!请描述你想要达到的目标,我相信你会在这里得到更好、更优雅的解决方案......
这是一种使用eval
andsprintf
函数的方法。请参阅两者的文档以了解有关它们的更多信息。
for count = 1:10
eval(sprintf('mat%d = zeros(count);',count));
end