我需要生成不同的块对角矩阵,如:
blkdiag(0,0,0, ... ,0,unit)
blkdiag(0,0,0, ... ,0,unit,unit)
blkdiag(unit,unit, ... ,unit,unit)
说100次迭代,并使用unit
作为m*m
矩阵对其进行评估。我在循环中生成参数的字符串,但函数不理解char输入,我不知道该怎么做!
感谢任何帮助...
答案 0 :(得分:2)
blkdiag
希望数值作为逗号分隔列表中的输入。生成以逗号分隔的列表的简单方法是使用单元格数组。
我假设通过" 100迭代"您的意思是,您将100个值传递给blkdiag
,第一个调用是99个零,一个unit
实例,最后一个调用是unit
的100个实例。
unit = magic(5); % some random test matrix for unit
total_iterations = 100; % total number of iterations to go through
C = cell(2*total_iterations-1); % total size of cell array
C(1:total_iterations-1) = 0;
C(total_iterations:end) = unit;
for iter = 1:total_iterations
new_matrix = blkdiag(C{iter:iter+total_iterations-1});
% do other stuff here...
end
C{a:b}
生成逗号分隔的C
元素列表,这正是我们所需要的。