انجمن سایت کلیدستان


رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
function

function

#1
سلام این کدیه که من برا convolve نوشتم و میخوام function اش کنم خود کد درسته ولی تو فانکشنش مشکل دارم.خود کد رو هم اینجا میارم و هم فانکشنی که براش نوشتم ممنون میشم بگین مشکل فانکشنش چیه.اروری که برا اجرای فانکشن میاره اینه :Not enough input arguments.

خود کد:

کد:
clc;
clear all;
close all;

t=0:1/20:9*(1/20);
x=rand(1,10);
subplot(3,3,1);plot(t,x)
title('x(t)','color','B')



t=0:1/20:9*(1/20);
h=rand(1,10)';
subplot(3,3,2);plot(t,h)
title('h(t)','color','B')



for i=1:length(h)
    X(i:length(x)+(i-1),i)=(x(1,:))'
end

y=X*h;
% I titled y=X*h as "Mconv(x,h)"
subplot(3,3,4);plot(y);title('Mconv(x,h)','color','B')
subplot(3,3,5);plot(conv(x,h));title('conv(x,h)','color','B')


it's function:

کد:
function [ X ] = Mconvolve(x,h)

for i=1:length(h)
    X(i:length(x)+(i-1),i)=(x(1,:))';
end

end
پاسخ

function

#2
سلام.
تابع رو به صورت زیر تعریف می کنیم :

کد:
function [X] = Mconvolve(x,h)

t=0:1/20:9*(1/20);
subplot(3,3,1);plot(t,x)
title('x(t)','color','B')

t=0:1/20:9*(1/20);
subplot(3,3,2);plot(t,h)
title('h(t)','color','B')

for i=1:length(h)
    X(i:length(x)+(i-1),i)=(x(1,:))'
end

y=X*h;
% I titled y=X*h as "Mconv(x,h)"
subplot(3,3,4);plot(y);title('Mconv(x,h)','color','B')
subplot(3,3,5);plot(conv(x,h));title('conv(x,h)','color','B')

end

و سپس به صورت زیر به آن ارجاع می دهیم :

کد:
clear all
close all
clc

x=rand(1,10);
h=rand(1,10)';

X=Mconvolve(x,h)
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ

function

#3
ممنون از شما.حالا اگه بخوایم از این فانکشن برا یه تابع دیگه مثلا غیر رندوم استفاده کنیم چی؟مگه نه اینکه تابعی که تعریف میشه باید برا همه شرایط جواب بده؟!این تابعی که شما تعریف کردید به خاطر وجود بازه زمانی در حوزه محدودی جواب خواهد داد!
پاسخ

function

#4
من بر اساس ورودی و خروجی هایی که شما مشخص کرده بودید، تابع رو تعریف کردم. حالا اگر قصد دارید که تابع بتونه برای بازه های زمانی مختلف جواب بده، باید t رو از تابع بیارید بیرون و یک ورودی دیگر با نماد t ، به ورودی های تابع اضافه کنید. یعنی شما t رو در بیرون از تابع تعریف کرده و سپس آن را به تابع می دهید تا بر اساس آن، پردازش کند.
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ

function

#5
(۱۳۹۲/۰۸/۱۲, ۰۱:۲۵ ب.ظ)'admin' نوشته: من بر اساس ورودی و خروجی هایی که شما مشخص کرده بودید، تابع رو تعریف کردم. حالا اگر قصد دارید که تابع بتونه برای بازه های زمانی مختلف جواب بده، باید t رو از تابع بیارید بیرون و یک ورودی دیگر با نماد t ، به ورودی های تابع اضافه کنید. یعنی شما t رو در بیرون از تابع تعریف کرده و سپس آن را به تابع می دهید تا بر اساس آن، پردازش کند.

 
پاسخ

function

#6
(۱۳۹۲/۰۸/۱۳, ۰۷:۱۸ ب.ظ)'sonia' نوشته:
(۱۳۹۲/۰۸/۱۲, ۰۱:۲۵ ب.ظ)'admin' نوشته: من بر اساس ورودی و خروجی هایی که شما مشخص کرده بودید، تابع رو تعریف کردم. حالا اگر قصد دارید که تابع بتونه برای بازه های زمانی مختلف جواب بده، باید t رو از تابع بیارید بیرون و یک ورودی دیگر با نماد t ، به ورودی های تابع اضافه کنید. یعنی شما t رو در بیرون از تابع تعریف کرده و سپس آن را به تابع می دهید تا بر اساس آن، پردازش کند.
 
 

کد: ممنونم من تابعی که جواب داد رو میذارم اینجا به نظرتون این درسته؟ شکلی که میخوامو کمو بیش میده:

کد پی‌اچ‌پی:
function [ ] = Mconvolvex,)

for 
i=1:length(h)
    
X(i:length(x)+(i-1),i)=(x(1,:))';
end

y=X*h

end 
 
پاسخ

function

#7
شما پردازش بر روی t رو از تابع بیرون آوردین، ولی کد زیر بهتره (بهتره پردازش داخل تابع باشه) :

کد:
function [X] = Mconvolve(x,h,t)

subplot(3,3,1);plot(t,x)
title('x(t)','color','B')

subplot(3,3,2);plot(t,h)
title('h(t)','color','B')

for i=1:length(h)
    X(i:length(x)+(i-1),i)=(x(1,:))'
end

y=X*h;
% I titled y=X*h as "Mconv(x,h)"
subplot(3,3,4);plot(y);title('Mconv(x,h)','color','B')
subplot(3,3,5);plot(conv(x,h));title('conv(x,h)','color','B')

end

و به صورت زیر، به تابع ارجاع می دهیم :

کد:
clear all
close all
clc

x=rand(1,10);
h=rand(1,10)';
t=0:1/20:9*(1/20);

X=Mconvolve(x,h,t)

همان طور که مشاهده می کنید، t نیز به عنوان ورودی تابع، تعریف شده است.
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ

function

#8
ممنون
پاسخ
 سپاس شده توسط admin ، شماره مجازی امارات ، تلگرام ضد فیلتر 2023


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان