# How could I possibly iterate over three 3D arrays and use their variable names iteratively in the title and axes?

2 views (last 30 days)
AY on 16 Sep 2022
Commented: Stephen23 on 16 Sep 2022
x = freq;
idx_phi = find((phi_vec) == 0);
idx_theta = find((theta_vec) == 0);
v_dx = {EField_h(idx_phi,idx_theta,:), EField_v(idx_phi,idx_theta,:),EField_a(idx_phi,idx_theta,:)}
for i = 1: numel(v_dx)
y = squeeze(abs(v_dx{i}));
plot(x,((y).^2)/50,'-')
title(num2str(v_dx{i})) % Here I want to iterate over the variable names: EField_h, EField_v, EField_a
xlim([fc-0.5 fc+0.5]);
xlabel('frequency');
ylabel(v_dx{i},''); % Here I want to iterate over the variable names: EField_h, EField_v, EField_a
end
##### 3 CommentsShowHide 2 older comments
Stephen23 on 16 Sep 2022
S = struct(..)
S.('somefieldname')

Sign in to comment.

### Accepted Answer

Jan on 16 Sep 2022
Edited: Jan on 16 Sep 2022
v_dx = struct('EField_h', EField_h(idx_phi,idx_theta,:), ...
'EField_v', EField_h(idx_phi,idx_theta,:), ...
'EField_a', EField_h(idx_phi,idx_theta,:));
Fields = fieldnames(v_dx);
for k = 1:numel(Fields)
value = v_dx.(Fields{k});
y = squeeze(abs(value));
...
This is called "dynamic fieldnames". The parentheses around the field name are important.
By the way, there is no need to include an array in square brackets. [] is Matlab's operator for concatenating arrays. [x] concatenates x with nothing, so simply write x.
##### 0 CommentsShowHide -1 older comments

Sign in to comment.

### Categories

Find more on Structures in Help Center and File Exchange

R2019b

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by