![]() |
درخواست کمک برای مقداردهی به یک ماتریس
من می خوام که یه تابع بنویسم که یه ماتریس با ابعاد 3*487183 (t)رو به عنوان ورودی بگیردو هر جایی رو که مقادیر سطر و ستون ورودی(t) مشخص می کنه در یک ماتریس با ابعاد 49290*49290 (e)تبدیل به عدد یک بکنه من کد زیر رو نوشتم اما نمی دونم چرا خطا می ده.
|
با سلام
و عرض ادب نمی دانم شما این عدد جادویی (49290*49290) را چه طور و از کجا و بر اساس چه معیاری بدست آورده اید ولی اگر کمی به این فکر می کردید که این ماتریس به این بزرگی را در کدام حافظه جای خواهید داد خیلی خوب می شد. اگر فرض کنیم که هر عنصر ماتریس یک عدد double چهار بایتی است آنگاه مقدار حافظه مورد نیاز شما می شد: 49290*49290 *4 که می شود 9,718,016,400 که در حدود ۹ گیگابایت است. کامپیوترهای ۳۲ بیتی امروزی بیش از ۴ گیگابایت حافظه رم را نمی توانند پشتیبانی کنند. موفق و پیروز باشید. |
فراموش کردم
function [e] = test(A) n = 4; B = zeros(n, n); B(A) = 1; end |
آقای جعفری عزیز شما
من یه الگوریتم spectral clustering دارم که مجموعه داده های ورودیش یک ماتریس مربعی باید باشه تا بتونه خوشه هر گره رو تشخیص بده.من مجموعه داده epinion رو دانلود کردم توی این مجموعه داده که یک ماتریس3*487183 در هر سطر مشخص شده هر گره با کدوم گره و با چه مقداری مرتبط است مثلا(45 20 1) نشاندهنده اینکه گره 20 با گره 45 و با مقدار1 ارتباط دارد .حالا من می خواهم این مجموعه داده رو برای استفاده در الگوریتم spectral clustering تبدیل به یک ماتریس مربعی بکنم .تعداد کل گره ها 49290 تا است به همین خاطر ماتریس رو 42290*49290 تا در نظر گرفتم .البته با توجه به ارتباط بین گره ها این ماتریس 49290*49290 یک ماتریس اسپارس به نظر می آید حالا من می خواهم که در این ماتریس در مکان هر گره (که توسط هر سطر مجموعه داده epinion مشخص می شه) عدد 1 رو وارد کنم . کد بالا رو نوشتم و خطایی که می ده (همون خطای کمبود حافظه)بنابراین اگه شما راه حلی می دونید لطفا راهنمایی ام بکنید. متشکرم |
با سلام
۱- گرچه من بر عقیده خود در مورد چیزهایی که نوشتم اصرار دارم اما آنها را پاک کردم تا از مسائل حاشیه ای فاصله بگیریم. ۲- برای حل مشکل تان راه های مختلفی وجود دارد. البته من خیلی با این روش خوشه بندی آشنا نیستم چون خودم در ابتدای راه هستم. ولی اصولا در الگوریتم هایی که نیاز به دسترسی تصادفی به ماتریس مجاورت نداریم از لیست مجاورت استفاده می کنیم که از نظر حافظه بسیار کارا (efficient) است.(البته از ماتریس های خلوت هم می شود استفاده کرد).می توانید چنین لیستی را در متلب ایجاد کنید و همه مراحل الگوریتم را بر اساس همین لیست مجاورت تغییر دهید. راه دیگر استفاده از زبانهای فوق العاده قدرت مندی مثل c و ++c و فراخوانی توابع نوشته شده در متلب یا اجرای آنها بدون متلب. البته پیاده سازی این راه ها آنقدرها هم سرراست نیست. پیشنهاد می کنم به ابزارهای آماده زیر که برای کار کردن با مجموعه داده های بزرگ ساخته شده اند نگاهی بیاندازید: http://alumni.cs.ucsb.edu/~wychen/sc.html Our tool can handle large data sets (200,000 RCV1 data) on a 4GB memory general machine. MATLAB spectral clustering package | Download MATLAB spectral clustering package software for free at SourceForge.net A MATLAB spectral clustering package to handle large data sets (200,000 RCV1 data) on a 4GB memory general machine Clustering Toolbox |
زمان محلي شما با تنظيم GMT +3.5 هم اکنون ۰۹:۱۲ بعد از ظهر ميباشد. |
Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.1.0 ©2007, Crawlability, Inc.