MATLAB:如何在另一个变量名中使用变量值?

Max*_*ell 3 variables matlab loops naming-conventions

我想知道这是否可行.我的代码看起来像这样:

indexStop = find(firstinSeq(x,4) ~= ...
                 littledataPassed(y:length(littledataPassed),4), 1, 'first');
for z= 0:(n-1)
   indexProcess = find((littledataPassed(y:y+indexStop-1,6) == 1 & ... 
      littledataPassed(y:y+indexStop-1,2) == firstinSeq(x,2) & ... 
      littledataPassed(y:y+indexStop-1,5) == z), 1, 'first'); 
   if isempty(indexProcess)
      msgLength[n](countmsgLength[n],:)= [firstinSeq(x,:) [0 0 0 0 0 0]];
   else
      msgLength[n](countmsgLength[n],:)= [firstinSeq(x,:) ...
         littledataPassed(y+indexProcess-1,:)];
   end
   countmsgLength[n]= countmsgLength[n] + 1;
end
Run Code Online (Sandbox Code Playgroud)

我希望在任何地方将读取[n]切换到实际值n,这样我就可以使用它将数据添加到格式的九个不同变量中msgLength#.我试过搜索教程,但没有看到任何关于这个主题的内容.

gno*_*ice 8

这几乎总是更好的使用数组或单元阵列来存储数据,而不是创造一堆命名的变量a1,a2,a3,等.例如,您可以初始化msgLength为一个单元阵列n元素:

msgLength = cell(1,n);
Run Code Online (Sandbox Code Playgroud)

您可以访问msgLength使用花括号的单元格:

msgLength{n} = ...  %# Assign something to cell n
Run Code Online (Sandbox Code Playgroud)

您的变量countmsgLength可以只是一个常规数字数组,因为它似乎只存储n值.您只需将方括号更改为括号(即[n]to (n))即可.


但是,如果您真的想要创建n单独的变量,最终可能会使用EVAL函数.这个问题这个问题展示了如何使用另一个变量的值创建变量名称的一些示例.