کلیدستان

نسخه‌ی کامل: اشکال در function کردن کد نوشته شده در متلب
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
با سلام. من میخوام این کد رو function کنم و در جای دیگر استفاده کنم ولی inputها رو هر چی قرار میدم داخل اون کد دیگر ایراد میگیره با وجود اینکه برای کد دیگه اونا رو هم مجدد تعریف میکنم .لطف میکنید این function رو برام بنوسید منظورم inputاها و outputها ست.کدی که نوشتم اینه:ببخشید با کپی کردن علایم یخورده ایراد پیدا کرده 

کد پی‌اچ‌پی:
clear all
close all
clc
 
%%
 
FigDim=10;
 
 
%% 
build Fig
 
Fig
=zeros(FigDim);
Fig(1,1)=1;
Phi0*pi/180:1*pi/180:360*pi/180;
Phinum=length(Phi);
MaxRhos=round(sqrt(2*FigDim/2*FigDim/2));
RhosSeries=-MaxRhos:MaxRhos;
%% 
Implementing the Trace Transform
 
for i=1:Phinum
for x=1:FigDim
for y=1:FigDim
Rhos
(x,y,i)=(round((x-FigDim/2)*cos(Phi(i))+(y-FigDim/2)*sin(Phi(i))));
end
end
for j=1:2*MaxRhos+1
MaskRho
=-1*(abs(sign(Rhos(:,:,i)-RhosSeries(j)))-1);
Trans(j,i)=sum(sum(MaskRho.*Fig));
end
end
 
imagesc
(Trans); figure(gcf
سلام
لطفا برای کپی کد ها از بلوک php استفاده کنید تا برنامه شما قابل خواندن باشد.
در صورت بلد بودن شما را راهنمایی خواهم کرد.
 
سلام من این تابع رو function کردم به صورت زیر

کد پی‌اچ‌پی:
function [  ] = samira1FigDim )
clc
 
%% build Fig
 
Fig
=zeros(FigDim);
Fig(1,1)=1;
Phi0*pi/180:1*pi/180:360*pi/180;
Phinum=length(Phi);
MaxRhos=round(sqrt(2*FigDim/2*FigDim/2));
RhosSeries=-MaxRhos:MaxRhos;
%% 
Implementing the Trace Transform
 
for i=1:Phinum
for x=1:FigDim
for y=1:FigDim
Rhos
(x,y,i)=(round((x-FigDim/2)*cos(Phi(i))+(y-FigDim/2)*sin(Phi(i))));
end
end
for j=1:2*MaxRhos+1
MaskRho
=-1*(abs(sign(Rhos(:,:,i)-RhosSeries(j)))-1);
Trans(j,i)=sum(sum(MaskRho.*Fig));
end
end
 
imagesc
(Trans); figure(gcf


end 

سپس در command window این عبارت را نوشتم

کد پی‌اچ‌پی:
samira1(10

و مشکلی نداشت. 
فکر میکنم شما در هنگام تابع کردن دستور clear all را پاک نمکنید.چون بودن این دستور باعث میشود متغیر FigDim پاک شود و بری اجرا به مشکل بخورید.
 با سپاس از شما دوست عزیز.
لطف می کنید طرز استفاده از بلوک php را هم برام بگید سپاسگزارم.
از عکس زیر کمک بگیرید