如何使用For循环将复杂数据存储到数组中?

时间:2018-07-16 22:45:51

标签: matlab for-loop

我正在尝试将包含复数的数据存储到数组中。我在如何设置循环和提取数据方面遇到问题。我得到的错误是代码行11中的“下标索引必须是实数正整数或逻辑”。

for k=10e-10:0.01:10  %discrete reduced frequency range
Ck = (besselh(1,2,k))./(besselh(1,2,k)+1i*besselh(0,2,k)); %Bessel function

%Matrices
A=[0.8132  -0.1008; -0.0725  2.0518]; 
B=Ck*[7.623  57.15; -8.233  -57.157]; 
C=Ck*[1865  1473.14; -1119  11907.48]; 

%frd function
Hresp=frd(Abar,k);
H11(k)=Hresp;
end

我希望输出数据如下图所示: I would like my output data to look like this

2 个答案:

答案 0 :(得分:1)

执行所需操作的最简单方法(IMO)是拥有一个整数循环索引,以及一个带有k值的预先计算的数组:

k = 10e-10:0.01:10;
H11 = zeros(size(k));
for ii = 1:numel(k)
  H11(ii) = k(ii); % whatever computation here involving k(ii)
end

请注意,我已经预先分配了H11,这可以防止在循环执行期间重新分配。

答案 1 :(得分:0)

k的值是非整数,您正在尝试为其编制索引。没有数组的0.1元素,只有元素123,...使用单独的变量来跟踪您所在的索引。例如,

ind = 1;
for k = 10e-10 : 0.01 : 10
  % some work would go here
  H11(ind) = whatever;
  ind = ind + 1;
end