کلیدستان

نسخه‌ی کامل: چند خروجی در یک حلقه
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام
[align=right]بنده کد زیر رو برای فراخوانی یک تصویر 3 بانده و رسم نمودار هیستوگرام آن نوشتم که کار هم می کنه اما مشکل بنده اینجاست که فقط نمودار هیستوگرام باند آخر ترسیم میشه ولی من نیاز دارم که برای هر کدام از باندهای تصویر نمودار جداگانه ترسیم بشه 
[align=right]در واقع می خوام ماتریس a هروقت که حلقه یک بار اجرا شد ترسیم بشه و بعد حلقه ادامه پیدا کنه یعنی به ازاء هر    i     یک نمودار ترسیم بشود

کد:
clear;
close all;
clc;
test=imread('C:\Users\Public\Pictures\Sample Pictures\Desert.jpg');

for i=1:3;
for j=1:256;
val=find(test(:,:,i)==j-1);
a(j,1)=size(val,1);
end
end
figure
plot(1:256,a)
xlabel('DN')
ylabel('num of pixel')

ممنون اگر کمک کنید
 
دستور plot رو به جای اینکه بیرون حلقه قرار بدی درون حلقه قرار بده .
(۱۳۹۲/۰۸/۲۲, ۱۰:۲۰ ب.ظ)'4i469x' نوشته: [ -> ]دستور plot رو به جای اینکه بیرون حلقه قرار بدی درون حلقه قرار بده .

 


سلام
ممنون از راهنمایی شما
اما با بردن plot داخل حلقه مشکل حل نمیشه مگر اینکه یه شرط بزاریم که وقتی  j  یه دور کامل زد و نوبت به تغییر   i    رسید اونوقت plot  گرفته بشه و این چرخه ادامه پیدا کنه و در آخر به تعداد  i ها plot خواهیم داشت
اون شرط و نمی دونم چه جوری تعریف کنم
اونو اگر کمک کنید ممنون میشم 
 
سلام.
شما دو حلقه for تو در تو دارید. منظور 4i469x ، قرار دادن دستور plot درون هر دو حلقه for نیست، بلکه تنها باید درون حقه for مربوط به پارامتر i ، دستور plot را بنویسید (دقیقا پس از اتمام حلقه for مربوط به پارامتر j). یعنی به این صورت :

کد:
clear;
close all;
clc;
test=imread('C:\Users\Public\Pictures\Sample Pictures\Desert.jpg');

for i=1:3;
    for j=1:256;
        val=find(test(:,:,i)==j-1);
        a(j,1)=size(val,1);
    end
    figure
    plot(1:256,a)
    xlabel('DN')
    ylabel('num of pixel')
end
سلام

ممنون از راهنمایی دوستان