在matlab中将字符串作为函数输入参数传递

时间:2017-09-27 22:58:52

标签: matlab

我需要生成不同的块对角矩阵,如:

blkdiag(0,0,0, ... ,0,unit)

blkdiag(0,0,0, ... ,0,unit,unit)

blkdiag(unit,unit, ... ,unit,unit)

说100次迭代,并使用unit作为m*m矩阵对其进行评估。我在循环中生成参数的字符串,但函数不理解char输入,我不知道该怎么做!

感谢任何帮助...

1 个答案:

答案 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元素列表,这正是我们所需要的。