Improving the speed of code with passing to a function input a cell array or structure.
2 ビュー (過去 30 日間)
古いコメントを表示
I'm trying to pass some amount of numerical data as a function input.
I had that row in my code:
[z1,y1]=ode45(@(z,y) famplifire(sigma_pa,N0,sigma_pe,sigma_se,k,y,z),zspan,startval);
I'm trying to replace four parameters: sigma_pa,N0,sigma_pe,sigma_se. I've tryed to replace them with cell array, but the time of execution of code nevertheless rises. So I had some questions:
1) Using of cell arrays insted of usual numerical data can improve quickness of my code?
2) I had another idea to use a struct, but I don't know how. If you can, give me some advices (or simple examples) please. Or I can make another question with my code.
0 件のコメント
採用された回答
Matt J
2021 年 4 月 3 日
編集済み: Matt J
2021 年 4 月 3 日
We can't see what famplifire [sic.] is doing with your variables so there isn't any specific comments that can be made. However, the rule of thumb is basically that if you must loop through a small number of large arrays/matrices, it can be advantageous to hold them in cells. Otherwise, it is probably better to concatenate them into a single array.
Structures are essentially the same as cell arrays. They are just indexed differently.
3 件のコメント
Matt J
2021 年 4 月 3 日
If the C{i} are all scalars, it would be better if C were numeric rather than a cell array
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Creating and Concatenating Matrices についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!