stop the data comprising from 4 different loops in an array
1 次查看(过去 30 天)
显示 更早的评论
Hi here is the code :
%%%%%%
for w=[0.01,0.1,0.3,0.8,3]
for K=4:9
for T=2:3
for tau=1:2
G=K*exp(-(tau*(i*w)))/(T*i*w+1);
G_n=6.5/((2.5*(i*w)+1)*(1.5*(i*w)+1));
Delta_a=G-G_n;
%%%%%%%
I want to have Delta_a consisting from an array covering all the values not the very last one Thanks
采纳的回答
Guillaume
2016-12-20
编辑:Guillaume
2016-12-20
You could modify your loops in order to create indices for your Delta_a:
w = [0.01,0.1,0.3,0.8,3];
K = 4:9;
T = 2:3;
tau = 1:2;
Delta_a = zeros(numel(w), numel(K), numel(T), numel(tau)); %predeclare array to avoid growing it in the loop
for wi = 1:numel(w)
for ki = 1:numel(K)
for ti = 1:numel(T)
for taui = 1:numel(tau);
G = K(ki)*exp(-(tau(taui)*(i*w(wi))))/(T(ti)*i*w(wi)+1);
G_n = 6.5/((2.5*(i*w(wi))+1)*(1.5*(i*w(wi))+1));
Delta_a(wi, ki, ti, taui) = G-G_n;
end
end
end
end
Or you could just no bother with the loops, and do it all in one go. It's very easy, particularly if you have R2016b:
w = [0.01,0.1,0.3,0.8,3].'; %column vector
K = 4:9; %row vector
T = permute(2:3, [1 3 2]); %vector along 3rd dimension
tau = permute(1:2, [1 4 3 2]); %vector along 4th dimension
G = K .* exp(-(tau.*1i.*w)) ./ (T.*1i.*w + 1);
G_n = 6.5 ./ ((2.5*1i*w + 1) .* (1.5*1i*w+1));
Delta_a = G - G_n;
Prior to R2016b, you have to use bsxfun:
G = bsxfun(@times, K, exp(-bsxfun(@rdivide, bsxfun(@times, tau, 1i*w), bsxfun(@times, T, 1i*w) + 1)));
G_n = 6.5 ./ ((2.5*1i*w + 1) .* (1.5*1i*w+1));
Delta_a = G - G_n;
0 个评论
更多回答(1 个)
Jan
2016-12-20
编辑:Jan
2016-12-20
wv = [0.01,0.1,0.3,0.8,3];
Kv = 4:9;
Tv = 2:3;
tauv = 1:2;
Delta_a = zeros(numel(wv), numel(Kv), numel(Tv), numel(tauv)); % Pre-allocate
for iw = 1:numel(w)
w = wv(iw);
G_n = 6.5/((2.5*(1i*w)+1)*(1.5*(1i*w)+1)); % 1i instead of i
for iK = 1:numel(Kv)
K = Kv(iK);
for iT = 1:numel(Tv)
T = Tv(iT);
for itau = 1:numel(tauv)
tau = tauv(itau);
G = K*exp(-(tau*(1i*w)))/(T*1i*w+1);
Delta_a(iw, iK, iT, itau) = G-G_n;
end
end
end
"i" is confuced with the imaginary unit too often, so use 1i instead.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!