我试图在图像压缩上编写代码。
I = imread('cameraman.bmp');
I = im2double(I);
T = dctmtx(8);
dct = @(block_struct) T * block_struct.data * T';
B = blockproc(I,[8 8],dct);
每当我尝试执行上述行时,我都会遇到错误
error: matrix cannot be indexed with .
error: called from
@<anonymous> at line 1 column 45
blockproc at line 135 column 6
请帮我解决这个问题。 感谢。
答案 0 :(得分:1)
@匿名&GT;在第1栏第45栏
它写了&#34; block_struct.data&#34;的位置错误。
发生错误是因为你的block_struct是一个矩阵(例如,[1 2; 3 4])并且它不是可调用对象(换句话说,&#34; block_struct。&#34;被禁止)。< / p>
尝试删除&#34; .data&#34;。
答案 1 :(得分:1)
我通过纠正乘法计算解决了类似的问题。 假设这里的“数据”是一个变量,该变量乘以 block_struct
将 block_struct.data 更改为 block_struct *数据 在矩阵计算中,使用*代替点符号。
希望有帮助。 JSH