Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab:循环中的一系列变量_Matlab_Variables_Loops - Fatal编程技术网

Matlab:循环中的一系列变量

Matlab:循环中的一系列变量,matlab,variables,loops,Matlab,Variables,Loops,这是另一位帮助我的stackoverflow参与者提供的解决方案。 数据来自csv文件: States Damage Blizzards Indiana 1 3 Alabama 2 3 Ohio 3 2 Alabama 4 2 %// Parse CSV file [States, Damage, Blizzards] = textread(csvfilename, '%s %d %d', ...

这是另一位帮助我的stackoverflow参与者提供的解决方案。 数据来自csv文件:

    States Damage Blizzards

    Indiana 1      3
    Alabama 2      3
    Ohio    3      2
    Alabama 4      2


%// Parse CSV file
[States, Damage, Blizzards] = textread(csvfilename, '%s %d %d', ...
    'delimiter', ',', 'headerlines', 1);

%// Parse data and store in an array of structs
[U, ix, iu] = unique(States);        %// Find unique state names
S = struct('state', U);              %// Create a struct for each state
for k = 1:numel(U)
    idx = (iu == k);                 %// Indices of rows matching current state
    S(k).damage = Damage(idx);       %// Add damage information
    S(k).blizzards = Blizzards(idx); %// Add blizards information
end
在MATLAB中,我需要在循环中创建一系列指定变量(A1、A2、A3)。我有三个区域的结构S:状态,龙卷风,飓风

现在,我尝试使用此方法分配A1=,A2=,但出现了一个错误,因为它不适用于结构:

   for n = 1:numel(S)
   eval(sprintf('A%d = [1:n]',S(n).states));
   end
输出目标是循环中分配给结构字段的一系列变量:

  A1 = 2 3
  A2 = 2 3
  A3 = 4 5

我不能100%肯定我理解你的问题。
但也许你在寻找这样的东西:

for n = 1:numel(S)
   eval(sprintf('A%d = [S(n).damage S(n).blizzards]',n));
end
顺便说一句,使用
eval
而不是
eval
将抑制命令行输出

一点解释,为什么

eval(sprintf('A%d = [1:n]',S(n).state));  
不起作用:

S(1).state  
返回

ans = 
   Alabama
这是一个字符串。但是,

A%d
需要一个数字(有关数字格式,请参阅)。
另外,

numel(S) 
屈服

ans = 
   3
所以,

eval(sprintf('A%d = [1:n]',n));
将只返回以下输出:

A1 =

 1

A2 =

 1     2

A3 =

 1     2     3  

因此,您希望
n
作为变量名的计数器,但在其他结构字段(
damage
blizzards
)中组成条目向量,再次使用
n
作为计数器,正如@user1608954所解释的,为什么需要一堆不同名称的变量?为什么不在结构中为它创建另一个字段,或者至少使用它呢?嗯,我正在生成一个不同的变量名,这样我就可以绘制不同的变量。Schorsch,这里有一个结构:S=struct('Texas',0,'Kansas',1,'Maryland',2)我会的。给我一分钟。我已经发布了全部代码。就这样。谢谢,肖尔什。我一直在做类似的事情,但就是没能完成。谢谢。