MATLAB Answers

0

how to increase the number in for loop as i explained below??

Asked by M.Prasanna kumar on 20 Aug 2019
Latest activity Answered by Bhargavi Maganuru on 23 Aug 2019
for tt = 1:24
for rr = 1:24
for mm = 1:10
for nn = 1:50
[~,idx] = min(abs(time(:,1) - tof(mm,nn,rr,tt)));
voltage(mm,nn,rr,tt) =t(tt)[(idx,rr+1)]; %% here is the error
end
end
end
end
EVERY TIME WHEN tt VALUE INCREASES t(tt) should increase [t is a matrix]
if i write t1(idx,rr+1) it is working
i want to change from t1 to t2, then t3, then t4, and so on up to t24

  3 Comments

"i want to change from t1 to t2, then t3, then t4, and so on up to t24"
Do NOT do this!
Dynamically accessing variables names is one way that beginners force themselves into writing slow, complex, obfuscated, buggy code that is hard to debug. Read this to know why:
Instead of putting pseudo-indices into variable names, why not just use actual indexing? Indexing is simple, neat, easy to debug, and very efficient (unlike what you are trying to do).
Putting numbers into variable names is a sign that you are doing something wrong.
sir what is meant by actual indexing?? could you please explain

Sign in to comment.

1 Answer

Answer by Bhargavi Maganuru on 23 Aug 2019

You can create multidimensional array t to store t1, t2, ..t24 using “cat” function t=cat(3,t1,t2,..t24);
Now you can access t1 using t(:,:,1) and t2 using t(:,:,2) and so on.
You can modify line in your code as
voltage(mm,nn,rr,tt) =t(idx,rr+1,tt);
For more information about “cat” function, refer to the link:https://www.mathworks.com/help/matlab/ref/cat.html
Hope this helps.

  0 Comments

Sign in to comment.