Filter löschen
Filter löschen

value transform by for loop

2 Ansichten (letzte 30 Tage)
yiying peng
yiying peng am 18 Jul. 2022
Bearbeitet: Torsten am 18 Jul. 2022
clear all;clc;
n=5;
for i= 1:n
c(:,:,i)=randi([0 3], 2, 2);
end
for i= 1:n
cdct(:,:,i) = dct2(c(:,:,i));
end
cd1_1 = cdct(1,1,:);
lcd1_1 = cd1_1(:);
for j=1:5
if lcd1_1(j) == 0
lcd1_1(j) = 10;
elseif lcd1_1(j) == 0.5
lcd1_1(j) = 20;
elseif lcd1_1(j) == 1
lcd1_1(j) = 30;
elseif lcd1_1(j) == 1.5
lcd1_1(j) = 40;
elseif lcd1_1(j) == 2
lcd1_1(j) = 50;
elseif lcd1_1(j) == 2.5
lcd1_1(j) = 60;
elseif lcd1_1(j) == 3
lcd1_1(j) = 70;
elseif lcd1_1(j) == 3.5
lcd1_1(j) = 80;
elseif lcd1_1(j) == 4
lcd1_1(j) = 90;
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
above is my code my goal is transform lcd1_1
if lcd1_1 was zero then transfer it to ten
if lcd1_1 was 0.5 then transfer it to twenty
step bt step to transfer all my lcd1_1 values
why my for loop not work please help me thanks

Antworten (1)

Torsten
Torsten am 18 Jul. 2022
Bearbeitet: Torsten am 18 Jul. 2022
Floating point arithmetic. To check for equality (==) always gives problems.
Take a look at
clear all;clc;
n=5;
for i= 1:n
c(:,:,i)=randi([0 3], 2, 2);
end
for i= 1:n
cdct(:,:,i) = dct2(c(:,:,i));
end
cd1_1 = cdct(1,1,:);
lcd1_1 = cd1_1(:);
for j = 1:5
v(j) = lcd1_1(j)==0|lcd1_1(j)==0.5|lcd1_1(j)==1|lcd1_1(j)==1.5|lcd1_1(j)==2|lcd1_1(j)==2.5|lcd1_1(j)==3|lcd1_1(j)==3.5|lcd1_1(j)==4;
end
v
for j=1:5
if lcd1_1(j) == 0
lcd1_1(j) = 10;
elseif lcd1_1(j) == 0.5
lcd1_1(j) = 20;
elseif lcd1_1(j) == 1
lcd1_1(j) = 30;
elseif lcd1_1(j) == 1.5
lcd1_1(j) = 40;
elseif lcd1_1(j) == 2
lcd1_1(j) = 50;
elseif lcd1_1(j) == 2.5
lcd1_1(j) = 60;
elseif lcd1_1(j) == 3
lcd1_1(j) = 70;
elseif lcd1_1(j) == 3.5
lcd1_1(j) = 80;
elseif lcd1_1(j) == 4
lcd1_1(j) = 90;
end
end
lcd1_1

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by