How to generate data?
1 view (last 30 days)
Show older comments
Dear experts,
I have this code as below:
V = 10660:1:11700;
deltavB = 50:1:70;
VB = 1:1:81
a=V-VB(1); %% VB(2)....VB(81)
b=deltavB/2;
for i =1:length(b)
for j =1:length(a)
c(i,j) = (a(j)./b(i)).^2;
end
end
g = 1./(1+c);
As you can see the size of g is [21 1041] for VB(1)
I need to reapeat this for each value of VB which is 81 points, I suppose to have g [21 1041] for each value of VB
How can I do so and save it as whole data togother?
Thanks in advanced.
0 Comments
Accepted Answer
Image Analyst
on 8 Nov 2022
Try this:
V = 10660:1:11700;
deltavB = 50:1:70;
VB = 1:1:81;
all_g = zeros(length(deltavB), length(V), length(VB));
for k = 1 : length(VB)
thisVB = VB(k);
a = V - thisVB; %% VB(2)....VB(81)
b = deltavB / 2;
for i = 1 : length(b)
for j = 1 : length(a)
c(i,j) = (a(j)./b(i)).^2;
end
end
g = 1./(1+c);
% Insert this g into the k'th slice of the 3-D array all_g.
all_g(:, :, k) = g;
end
fprintf('Done!\n')
More Answers (1)
Walter Roberson
on 8 Nov 2022
V = 10660:1:11700;
deltavB = 50:1:70;
VB = 1:1:81
numV = length(V);
numdeltavB = length(deltavB);
numVB = length(VB);
g = zeros(numdeltavB, numV, numVB);
b=deltavB/2;
for VBidx = 1 : numVB
a = V - VB(VBidx);
for i = 1:numdeltavB
c(j,:) = (a./b(i)).^2;
end
g(:,:,VBidx) = 1./(1+c);
end
The for i loop could also be eliminated by using automatic expansion. Something like
c = (a./(b.')).^2;
but you should recheck the sizes.
See Also
Categories
Find more on Creating and Concatenating Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!