|
*停權中*
|
這是偶寫的一段有用倒 for loop
if elseif else 的 matlab code.
基本上用法 C 沒啥差別,
只不過是一點語法的小差別,
偶用顏色大概把 for 還有 if 的範圍標示出來,
應該不至於看不懂,
至於題目本身不算難,
多想想應該就知道要怎麼解了.
代碼:
fid = fopen('lenna_jpg2.asc','r');
dctmp = 0;
X_unzzscantmp = zeros(size(X, 1)/8, size(X, 2)/8, 64);
Y_dct8 = X;
% load in every 8x8 block
for m=1:size(X, 1)/8
for n=1:size(X, 2)/8
EOBflag = 0;
for g=1:64
if (EOBflag == 0)
ftmp = fscanf(fid, '%s', 1);
end
if EOBflag == 1
X_unzzscantmp(m, n, g) = 0;
elseif strcmp(ftmp, 'EOB')
ftmp = 'nogood';
EOBflag = 1;
X_unzzscantmp(m, n, g) = 0;
else
if g == 1
dctmp2 = dctmp;
X_unzzscantmp(m, n, 1) = str2double(ftmp) + dctmp2;
dctmp = X_unzzscantmp(m, n, 1);
else
X_unzzscantmp(m, n, g) = str2double(ftmp);
end
end
end
Y_dct8(((m-1)*8+1):m*8, ((n-1)*8+1):n*8) = unzzscan(X_unzzscantmp(m, n, 1:64));
end
end
fclose(fid);
|