我正在尝试将包含复数的数据存储到数组中。我在如何设置循环和提取数据方面遇到问题。我得到的错误是代码行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
答案 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
元素,只有元素1
,2
,3
,...使用单独的变量来跟踪您所在的索引。例如,
ind = 1;
for k = 10e-10 : 0.01 : 10
% some work would go here
H11(ind) = whatever;
ind = ind + 1;
end