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

2 visualizzazioni (ultimi 30 giorni)
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 Commenti
AY
AY il 16 Set 2022
Modificato: AY il 16 Set 2022
I am able to loop over the field names now but not over the contents inside those fieldnames ....fieldnames contain cell arrays how can i access the contents inside the cell array and loop them as well without defining extra variables
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,:)])
for k = 1: numel(Fields)
y = squeeze(abs(Fields{k})); Here I want to access the values of fields
figure;
plot(x,((y).^2)/50,'-')
title(Fields{k})
xlim([fc-0.5 fc+0.5]);
xlabel('frequency');
ylabel(Fields{k});
end

Accedi per commentare.

Risposta accettata

Jan
Jan il 16 Set 2022
Modificato: Jan il 16 Set 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.

Più risposte (0)

Categorie

Scopri di più su Structures in Help Center e File Exchange

Prodotti


Release

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by