The left and right sides have a different number of elements

6 ビュー (過去 30 日間)
Matthew Worker
Matthew Worker 2021 年 11 月 30 日
編集済み: John Kelly 2021 年 12 月 8 日
please help me fix the error~~~
this is my code and
%% 3. Fourier descriptor
%① Make the matrix above.
%Find the positions (x1, x2) of foreground pixels valued '1' and save them to ‘pos’ array.
input=[0 0 0 0 0 0 0; 0 0 0 1 0 0 0; 0 0 1 0 1 0 0; 0 1 0 0 0 1 0; 0 0 1 0 1 0 0; 0 0 0 1 0 0 0; 0 0 0 0 0 0 0];
pos=boundary4(input);
%② Make a vector ‘comp’ that contains complex numbers:
%real value: x1 of an element of ‘pos’,imaginary value: x2 of an element of ‘pos’.
comp=complex(pos(:,1),pos(:,2));
%③ Do Fourier transform with ‘comp’ and save the result to ‘ft’.
ft=fft(comp);
%Make zero vector ‘ft1’ which has same size of ‘ft’ and save only first and second element value of ‘ft’ to ‘ft’1.
ft1=zeros(size(ft));
ft1(1:2) =ft(1:2);
%④ Do inverse transform of ‘ft1’ and display the results by plotting imaginary numbers.
figure
subplot(1,2,1);
plot(input), axis ([1,14,1,14]), axis square
title('input');
subplot(1,2,2);
plot(ifft (ft1),'o'), axis ([1,14,1,14]), axis square
title('output');
this is the fxn to get the boundary
function out=boundary4(image)
n=[0 1;-1 0;0 -1;1 0];
flag=1;
cc=[];
[x,y]=find(image==1);
x=min(x);
imx=image(x,:);
y=min(find(imx==1));
first=[x y];
dir=3;
while flag==1
tt=zeros(1,4);
newdir=mod(dir+3,4);
for i=0:3
j=mod(newdir+i,4)+1;
tt(i+1)=image(x+n(j,1),y+n(j,2));
end
d=min(find(tt==1));
dir=mod(newdir+d-1,4);
x=x+n(dir+1,1);y=y+n(dir+1,2);
cc=[cc;x y];
if x==first(1)&y==first(2)
flag=0;
end
end
out =cc;
and i get this error
Unable to perform assignment because the left and right sides have a different number of elements.
Error in boundary4 (line 19)
tt(i+1)=image(x+n(j,1),y+n(j,2));
Error in script (line 57)
pos=boundary4(input);

回答 (1 件)

VBBV
VBBV 2021 年 11 月 30 日
編集済み: VBBV 2021 年 11 月 30 日
tt(:,i+1)=image(x+n(j,1),y+n(j,2))
Change this line to above

カテゴリ

Help Center および File ExchangeSpectral Measurements についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by