When used as an index, the colon operator requires an integer operand.

2 vues (au cours des 30 derniers jours)
승곤 유
승곤 유 le 18 Mai 2022
Commenté : Dyuman Joshi le 10 Oct 2023
dbstop if warning
str2num=[file];
a=file(1);
[xmax, ymax]=size(a);
%a. 윈도우 사이즈 결정
O=app.windowsizeEditField.Value;
wsize=[O,O];
w_width=wsize(1);
w_height=wsize(2);
%b. 윈도우 중심점
xmin=w_width/2;
ymin=w_height/2;
%c. 그리드 설정 ******이 부분을 앱 디자이너에서 숫자 필터로 넣을 예정
X1=app.xminEditField.Value;
X2=app.xmaxEditField.Value;
Y1=app.yminEditField.Value;
Y2=app.ymaxEditField.Value;
xgrid=X1:w_width/2:X2;
ygrid=Y1:w_height/2:Y2;
XX=(X1+X2)/2;
YY=(Y1+Y2)/2;
%**********************이 부분을 어캐 넣을까??******************************
%rectangle('Position', [XX YY 64 64],'EdgeColor','r') %(XX,YY)는 좌측 상단의 점의 위치를 표시
%**************************************************************************
%d.윈도우의 수
w_xcount=length(xgrid);
w_ycount=length(ygrid);
%e.이미지에서 윈도우 찾기(탐색 영역)
x_disp_max=w_width/2;
y_disp_max=w_height/2;
%f. initiallyzation : imb(탐색영역을 포함하여 영역 설정)
test_ima(w_width,w_height)=0;
test_imb(w_width+2*x_disp_max, w_height+2*y_disp_max)=0;
dpx(w_xcount, w_ycount)=0;
dpy(w_xcount, w_ycount)=0;
xpeak1=0;
ypeak1=0;
%***********************************************************************************
%3. 이미지 분석
frs=app.framesecondEditField.Value;
mmp=app.mmpixelEditField.Value;
for q = 1:2:length(str2num)
a = char(str2num(q));
b = char(str2num(q+1));
imagea = imread(a);
imageb = imread(b);
size(imagea);
size(imageb);
for i=1:(w_xcount)
for j=1:(w_ycount)
max_correlation=0;
test_xmin=xgrid(i)-w_width/2;
test_xmax=xgrid(i)+w_width/2;
test_ymin=ygrid(j)-w_height/2;
test_ymax=ygrid(j)+w_height/2;
x_disp=0;
y_disp=0;
test_ima=imagea(test_xmin:test_xmax,test_ymin:test_ymax); %%%%here
test_imb=imageb((test_xmin-x_disp_max):(test_xmax+x_disp_max),(test_ymin-y_disp_max):(test_ymax+y_disp_max));
correlation=normxcorr2(test_ima,test_imb);
[xpeak,ypeak]=find(correlation==max(correlation(:)));
%re-scaling
xpeak1=test_xmin+xpeak-wsize(1)/2-x_disp_max;
ypeak1=test_ymin+ypeak-wsize(2)/2-y_disp_max;
dpx(i,j)= xpeak1-xgrid(i);
dpy(i,j)= ypeak1-ygrid(j);
end
quiver(-dpx,dpy)
end
V=sqrt(dpx.^2+dpy.^2).*0.001;
V_cali=V.*frs.*mmp;
end
I've seen the problem in the following lines, but I'm having trouble resolving it.
  1 commentaire
Dyuman Joshi
Dyuman Joshi le 10 Oct 2023
Firstly, You start your code with -
str2num=[file];
Using built-in function names as variables is not recommended. You should rename the variable (all instances of it) and then continue working with your code.
Secondly, it's not clear what the problem is you are facing. If you are getting an error, copy and paste the full error message i.e. all of the red text. And also provide any data you are working with, so that we can reproduce the error you are facing and suggest solutions accordingly.

Connectez-vous pour commenter.

Réponses (1)

Amit Dhakite
Amit Dhakite le 9 Oct 2023
Hi 승곤 유,
As per my understanding, you are facing an error which is related to using the colon operator that requires an integer operand, when used as an index.
Within your code, there is a specific line that contains the colon operator:
test_ima=imagea(test_xmin:test_xmax,test_ymin:test_ymax);
The error you are experiencing is likely due to some of the variables ("test_xmin", "test_xmax", "test_ymin", and "test_ymax") not being integers. However, the colon operator expects only integer values when accessing elements of an array.
To resolve this issue, please ensure that the values assigned to these four variables are integers. By adjusting them accordingly, you can provide the colon operator with the appropriate parameters, satisfying its requirement for integer values.
To know more about the "colon" operator, kindly refer to the following link:
I hope this explanation assists you in resolving the error.
  1 commentaire
Dyuman Joshi
Dyuman Joshi le 10 Oct 2023
"However, the colon operator expects only integer values when accessing elements of an array."
There is no such expectation from the colon operator.
The expectation, for such cases, is that indices used to access elements should be positive integers.

Connectez-vous pour commenter.

Catégories

En savoir plus sur 문자형과 string형 dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!