Alternate form of eval function
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Wiqas Ahmad
am 18 Mär. 2021
Kommentiert: Wiqas Ahmad
am 18 Mär. 2021
How can I write these two syntaxes in alternate from?
eval(['I',num2str(i),num2str(j),num2str(k),'=','getsiganl(filename1)',';']);
eval(['II',num2str(i),num2str(j),num2str(k),'=','smooth(sum(I',num2str(i),num2str(j),num2str(k),',2)',');']);
1 Kommentar
Akzeptierte Antwort
Bjorn Gustavsson
am 18 Mär. 2021
You'll have to learn good programming-habits and utilise the vectorized capabilities of matlab. This looks like a case where you might get away with multi-dimensional arrays - but that would require all your signals to have the same length. The safer option is to store all signals in a cell-array - there everything goes. Perhaps something like this:
I_all{i,j,k} = getsiganl(filename1);
I_all_smooth{i,j,k} = smooth(sum(I_all{i,j,k},2));
I would also suggest changing the indices i, j and k to i1, i2 and i3 - this makes me more comfortable when it comes to which order they should go in indexing and also leaves i and j for the imaginary constant.
HTH
2 Kommentare
Weitere Antworten (1)
Matt J
am 18 Mär. 2021
Why not simply
I(i,j,k)=getsiganl(filename1);
II(i,j,k)=smooth(sum(I(i,j,k),2))
Be mindful though that if i,j,k are scalar coordinates, neither the original eval form nor the above make sense.
2 Kommentare
Bjorn Gustavsson
am 18 Mär. 2021
If getsiganl returns a 2-D matrix it kind of makes sense, note that the eval-version would generate variables with names like I123 for i = 1, j = 2 and k = 3 and then the completely inuntangleable _I1234 for all of [i, j, k] = [12, 3 4], [1 23 4] or [1 2 34]...
Siehe auch
Kategorien
Mehr zu Whos finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!