查看: 2606|回復: 1|關注: 0
打印 上一主題 下一主題

奇迹觉醒怎么回归: [已答復] 位置 1 的索引無效。數組索引必須為正整數或邏輯值

[復制鏈接]

新手

5 麥片

財富積分


奇迹觉醒女神之光 www.mhotr.icu 050


1

主題

1

帖子

0

最佳答案
跳轉到指定樓層
1#
發表于 2019-5-28 00:24:07 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 T.W_fcHCy 于 2019-5-28 00:26 編輯

clc;
clear;
A0=imread('hight.bmp');
A1=imread('lowt.bmp');
SUM_Two_H =zeros(512,640);
    SUM_Two_L =zeros(512,640);
    SUM_Two_Hand =zeros(512,640);
    B0_Two_H =zeros(512,640);
    B1_Two_L =zeros(512,640);
    B2_Two_Hand =zeros(512,640);
    G =zeros(512,640)
    C = A0 - A1;   
    for i = 1:512
        for j = 1:640
            if C(i,j) == 0         
                for a = (i-4):(i+4)
                    for b = (j-4):(j+4)
                        SUM_Two_H(i,j) = A0(a,b) + SUM_Two_H(i,j);        該位置報錯,問題提示是標題
                        SUM_Two_L(i,j) = A1(a,b) + SUM_Two_L(i,j);
                        SUM_Two_Hand(i,j) = A2(a,b) + SUM_Two_Hand(i,j);
                    end
                end
                B0_Two_H(i,j) = (SUM_Two_H(i,j) - A0(i,j))/80;
                B1_Two_L(i,j) = (SUM_Two_L(i,j) - A1(i,j))/80;
                B2_Two_Hand(i,j) = (SUM_Two_Hand(i,j) - A2(i,j))/80;
                else
                G(i,j) = (B0_Average(i,j) - B1_Average(i,j)) ./ C(i,j);
                B0_Two_H(i,j) = G(i,j).*A0(i,j) + B1_Average(i,j) - G(i,j).*A1(i,j);
                B1_Two_L(i,j) = G(i,j).*A1(i,j) + B1_Average(i,j) - G(i,j).*A1(i,j);
                B2_Two_Hand(i,j) = G(i,j).*A2(i,j) + B1_Average(i,j) - G(i,j).*A1(i,j);
            end
        end
    end

論壇優秀回答者

5

主題

1547

帖子

428

最佳答案
  • 關注者: 124
2#
發表于 2019-5-28 07:41:51 | 只看該作者
寫代碼時多想想,i起點為1,導致a的起點(i-4)的數值為-3,之后引用A0(a,b)時,索引值a就導致該計算要引用A0矩陣的第-3行的某個元素,MATLAB里面向量、矩陣、高維數組等等的索引值必須是從1開始的整數,當然會報錯了
  1. for i = 1:512
  2.         for j = 1:640
  3.             if C(i,j) == 0         
  4.                 for a = (i-4):(i+4)
  5.                     for b = (j-4):(j+4)
  6.                         SUM_Two_H(i,j) = A0(a,b)...
復制代碼
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規則

關閉

站長推薦上一條 /3 下一條

快速回復 奇迹觉醒女神之光 返回列表