Loading workspace variable contents into an array or for loop
49 次查看(过去 30 天)
显示 更早的评论
I am new to Matlab but am well aware of the bad practice notion associated with dynamically creating workspace variables. Unfortunately, Matlab's volumeSegmenter only allows saving of segmentations as either MAT-files or workspace variables, and the former creates far too many individual files for the amount I require.
In the next step after creating them, I need to run all the segmentations (workspace vars seg1, seg2, seg3 ...) through a for loop. I am currently using who() to try and find all the needed workspace variables, but this doesn't work as only the names are stored in cells seg_options and cannot be called as variables:
vars = who();
find = contains(vars, 'seg');
seg_options = vars(find);
This is part of the for loop I need to call the segmentation variables for:
for i = 1:length(seg_options);
A = double(seg_options(i));
end
which obviously doesn't work properly as I need to be calling the actual variable and not just its name.
The code also needs to work for a flexible number of segmentations (ie I cannot initialize an array as a specific size). Is there a way to:
1) load the workspace variable into array, overwrite it, load the next one into the next array cell, etc. (ie saves the first segmentation as seg, loads into seg_array cell 1, saves the next segmentation as seg, load that into seg_array cell 2, and so on)
2) load all the created variables (seg1, seg2...) into an array seg_array
or
3) call and loop through all the workspace variables in the for loop itself - I know this is not ideal
Thanks in advance!
2 个评论
采纳的回答
Aditya
2024-8-8,20:54
You can load workspace variables into an array and process them in a loop using the following approach:
1) Identify Segmentation Variables
- You have already done this part using the "who" and "contains" functions.
2) Load Variables into an Array
- You can use the "eval" function to dynamically load the variables into an array.
3) Loop Through the Array to Process Each Segmentation
- Once the variables are loaded into an array, you can process them in a loop.
Here’s the complete code:
% Identify segmentation variables
vars = who();
find = contains(vars, 'seg');
seg_options = vars(find);
% Load variables into a cell array
seg_array = cell(1, length(seg_options));
for i = 1:length(seg_options)
seg_array{i} = eval(seg_options{i});
end
% Process each segmentation
for i = 1:length(seg_array)
A = double(seg_array{i});
% Your processing code here
end
Hope this helps!
更多回答(0 个)
另请参阅
类别
在 Help Center 和 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!