I need to replace some values with NaN and some values with zeros

Hi every one can help
in annexed figure I have table in left handside gives its corresponding curves and I want to replace some values in z1, z2, and z3 to be NaN and replace some values of zb to be zeros by using Matlab If -Condition ro get the right handside that gives the corresponding curves
Thanks in advance
M. Dahab

2 commentaires

what is the condition?
if gBt >= any value
z1= ????
elseif gBt == any value
z2= ????
end
Can you please use the excel file attached with Voss answer and write the complite code

Connectez-vous pour commenter.

Réponses (1)

Voss
Voss le 2 Fév 2023
Modifié(e) : Voss le 2 Fév 2023
I've entered the values from your left-hand table into Excel and saved the attached xlsx file.
Read the file into a matrix and plot z1, z2, z3, and zb vs xc:
M = readmatrix('data.xlsx');
figure();
plot(M(:,1),M(:,3:end))
set(gca(),'YDir','reverse');
Modify the matrix by replacing certain elements with 0 or NaN:
% where gBt is not close to 0.808269 ...
idx = abs(M(:,2) - 0.808269) > 1e-6;
% ... replace z1, z2, z3 with NaN ...
M(idx,3:end-1) = NaN;
% ... and replace zb with 0
M(idx,end) = 0;
Plot again, with new M for comparison:
figure();
plot(M(:,1),M(:,3:end))
set(gca(),'YDir','reverse');
You can use similar steps on your data.

8 commentaires

Thanks it is good and work and hope another answer with using if-condition
If you must use an if condition:
M = readmatrix('data.xlsx');
figure();
plot(M(:,1),M(:,3:end))
set(gca(),'YDir','reverse');
for ii = 1:size(M,1)
if abs(M(ii,2) - 0.808269) > 1e-6
% where gBt is not close to 0.808269
% replace z1, z2, z3 with NaN ...
M(ii,3:end-1) = NaN;
% ... and replace zb with 0
M(ii,end) = 0;
end
end
figure();
plot(M(:,1),M(:,3:end))
set(gca(),'YDir','reverse');
Thanks very much and appreciet your effort for helping me
it work exactly as I want in
You're welcome! Any questions, let me know. Otherwise, please "Accept This Answer". Thanks!
Moustafa Abedel Fattah
Moustafa Abedel Fattah le 6 Fév 2023
Déplacé(e) : Voss le 6 Fév 2023
Dear
I don't know if I would be annoying if I asked for a solution to the problem using If.....and......Swap. Thanks in advance.
What do you mean by "Swap"? I've showed a solution using "if", in a comment above.
Moustafa Abedel Fattah
Moustafa Abedel Fattah le 8 Fév 2023
Déplacé(e) : Voss le 9 Fév 2023
I mean by "swap" as a Matlab order to clean the cell value and then replace with another value if satisfied the condition "if"
thanks for your paying me attention
You can substitute "another value" you want to use in place of the NaN in the code above.

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!

Translated by