Using the struct function with a for loop
显示 更早的评论
Hello
I have a matrix that is 89x4. I've used a for loop to extract each row of data to make 89 new matrices. I needed to do that because each row is a new nodal point in my data set. What I need to do now is make a structure array with a list of each nodal point.
My original for loop is
for n=1:89;
eval(['Node_' num2str(n) '=nodeXYZ(n,:);']);
end
That gives me each matrix (Node_1 to Node_89). I've tried to used dynamics naming within a for loop to make a different array within a structure for each node but I keep getting errors. Or when it works its completely wrong.
Triangle_points.node_data.nodes=struct('Node',Node_1);
for field='Node';
Triangle_points.node_data.nodes.(field)=Node_1;
end
That is along the lines of what I'm trying. Its probably very wrong, which is why I need the help. I really don't want to have to write out 89 different fields and values! Any suggestions or help on this would be appreciated.
1 个评论
@Meghan: using eval is a buggy, slow, and obfuscated way to write code. Learn to code without it and your code will be faster, better, neater, and easier to read. There are so many tools that help you when you do not use eval, such as code hinting, tab completion, variable highlighting, help, syntax error highlighting, etc, etc,, which help you to write good code none of them work when you use eval! Summary: learn to write code without eval.
采纳的回答
更多回答(1 个)
Azzi Abdelmalek
2016-8-25
0 个投票
This is a very bad programming practice, please read this: http://matlab.wikia.com/wiki/FAQ#How_can_I_create_variables_A1.2C_A2.2C....2CA10_in_a_loop.3F
类别
在 帮助中心 和 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!