验证图像像素遍历代码正确性及生成对应位置2D矩阵方法
问题1:代码是否能完成610×340×103图像的像素遍历?
能完成。你写的双层for循环里,i遍历1到610对应图像的行维度,j遍历1到340对应列维度,paviaU(i,j,:)会精准取出每个(i,j)像素点对应的第三维度全部103个深度值,完全覆盖了所有像素的遍历需求,这部分逻辑没问题。
问题2:如何创建610×340的矩阵存储每个(i,j)对应的a值?
只需要两步修改:
- 先在循环开始前初始化一个对应尺寸的空矩阵
- 每次计算出
a后,把它赋值到矩阵的(i,j)位置
修改后的完整代码如下:
% 初始化存储a值的矩阵 a_matrix = zeros(610, 340); for i=1:1:610 for j=1:1:340 allbands=paviaU(i,j,:); writematrix(allbands,'allbands.txt','WriteMode','append'); fftmy=abs(fft(allbands)); fftmynew=fftmy(1:52); [xData, yData] = prepareCurveData( xaxis2, fftmynew ); % Set up fittype and options. ft = fittype( 'exp1' ); opts = fitoptions( 'Method', 'NonlinearLeastSquares' ); opts.Display = 'Off'; [fitresult, gof] = fit( xData, yData, ft, opts ); values=coeffvalues(fitresult); a=values(1); % 将当前a值存入对应位置 a_matrix(i,j) = a; end end
循环结束后,a_matrix就是你需要的610×340的2D矩阵,每个(i,j)位置的值就是对应像素迭代得到的a。
内容的提问来源于stack exchange,提问作者devnewdevv
相关产品推荐
相关产品推荐

