x=imread('test.jpg');
imshow(x);
total = 0;
for i=1:2
for j=1:2
for k=1:2
total = total + abs(x(i,j,k));
end
end
end
total
上記のコードは、i、j、k の最大値に関係なく、total を 255 として出力します。説明してください
x=imread('test.jpg');
imshow(x);
total = 0;
for i=1:2
for j=1:2
for k=1:2
total = total + abs(x(i,j,k));
end
end
end
total
上記のコードは、i、j、k の最大値に関係なく、total を 255 として出力します。説明してください
matlab は整数をオーバーフローせず、データ型が uint8 であるため、255 が出力されます。
a = repmat(uint8(100),5, 1)
a(1)+a(2)
a(1)+a(2)+a(3)
Matlab はラップアラウンドではなく最大値で出力をクランプするため、出力は 200 と 255 になります。Dennis によって与えられた sum 関数を使用すると、Matlab が最初に double に変換されるため、正しい値が得られます。
sum(a)
出力として 500 を与える必要があります。
あなたのコードフラグメントが何であるかはわかりませんが、配列の絶対値を合計したい場合は非常に簡単です:
sum(abs(x(:)))
コーナーからの最初の 2 つの値を含む部分行列だけが必要な場合:
subM= x(1:2,1:2,1:2)
sum(abs(subM(:)))