value transform by for loop
Show older comments
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
Answers (1)
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
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!