حسین خسروی

وبلاگ دانشگاهی حسین خسروی، عضو هیات علمی دانشگاه صنعتی شاهرود

حسین خسروی

وبلاگ دانشگاهی حسین خسروی، عضو هیات علمی دانشگاه صنعتی شاهرود

حسین خسروی

باتوجه به محدودیتهای صفحه شخصی موجود در سایت دانشگاه، این بلاگ را راه اندازی کردم.
اطلاعیه های مربوط به دروسی که تدریس می کنم و تمرینها در این وبلاگ قرار خواهد گرفت.
برای آگاهی از مطالب مربوط به هر درس، در قاب زیر (طبقه بندی موضوعی) روی نام درس کلیک کنید.

پیوندهای روزانه
  • ۰
  • ۰

اسلایدهای مربوط به بحث شبکه عصبی کانولوشن را از آدرس زیر دانلود کنید:

Convolutional Neural Networks

  • حسین خسروی
  • ۰
  • ۰

این ویدیو توضیحات مثال قبلی است که متاسفانه کیفیت صدای آن در برخی لحظات خوب نیست. برخی فریمها هم ناقص ضبط شده اند.

  • حسین خسروی
  • ۰
  • ۰

این مثال دو بخش دارد، یکی ایجاد پایگاه داده از اطلاعات کتابها و نوشتن آنها در فایل باینری book_data.db و بخش دوم شامل خواندن اطلاعات از همین فایل و نمایش آنها. ویدیوی ضبط شده مربوط به این مثال در پست بعدی منتشر می شود.


#include "stdafx.h"
#include <iostream>

struct BookInfo
{
	char name[30];
	char author[30];
	int  nPage;
	float price;
	int year;
};

void CreateDatabase()
{
	printf("To start, enter number of books you want to store in the database\n");
	int n = 0;
	scanf_s("%d", &n);
	printf("Please enter Book information for %d books as follows\n", n);
	printf("Name, Author, Pages, Price, Year of Publication\n");

	BookInfo *books = new BookInfo[n];
	for (int i = 0; i < n; i++)
	{
		std::cin.ignore();
		printf("\n#%d Name: ", i + 1);
		gets_s(books[i].name, 30);
		printf("\n#%d Author: ", i + 1);
		gets_s(books[i].author, 30);
		printf("\n#%d Pages: ", i + 1);
		scanf_s("%d", &books[i].nPage);
		printf("\n#%d Price: ", i + 1);
		scanf_s("%f", &books[i].price);
		printf("\n#%d Year: ", i + 1);
		scanf_s("%d", &books[i].year);
	}
	FILE* fp = 0;
	fopen_s(&fp, "book_data.db", "wb");
	if (!fp)
	{
		printf("File can't be oppened.\n");
		return;
	}

	fwrite(books, sizeof(BookInfo), n, fp);
	fclose(fp);

	printf("Data saved successfully\n");
}

void ReadDatabase()
{
	int n = 2;

	BookInfo *books = new BookInfo[n];

	FILE* fp = 0;
	fopen_s(&fp, "book_data.db", "rb");
	if (!fp)
	{
		printf("File can't be oppened.\n");
		return;
	}

	fread(books, sizeof(BookInfo), n, fp);
	for (int i = 0; i < n; i++)
	{
		printf("\n#%d Name: %s", i + 1, books[i].name);

		printf("\n#%d Author: %s", i + 1, books[i].author);

		printf("\n#%d Pages: %d", i + 1, books[i].nPage);

		printf("\n#%d Price: %.1f", i + 1, books[i].price);

		printf("\n#%d Year: %d", i + 1, books[i].year);

		printf("\n--------------------------------------------");
	}

	fclose(fp);
	delete[] books;
}

int main()
{
	printf("Welcome to Book Database Application:\n");
	bool create_data = false; //change to false for read mode

	if (create_data)
		CreateDatabase();
	else
		ReadDatabase();

	getchar();
    return 0;
}
  • حسین خسروی
  • ۰
  • ۰

در این مثال نحوه ایجاد فایل باینری و توابع نوشتن و خواندن (fread, fwrite) توضیح داده شده و یک فایل حاوی صد عدد اعشاری به دو صورت باینری و متنی ساخته شده و مقایسه می شوند:


  • حسین خسروی
  • ۰
  • ۰

در این مثال نحوه ایجاد فایل متنی، نوشتن در و خواندن از آن را خواهید دید. دو نوع فایل اسکی و یونیکد بررسی می شود:


  • حسین خسروی
  • ۰
  • ۰

مثالهایی از تابع که در کلاس بیان شد را از این آدرس دانلود کنید.

موارد مطرح شده: بررسی چند مثال ساده از توابع شامل محاسبه بیشینه، کمینه و میانگین یک آرایه. همچنین پیاده سازی تابع فاکتوریل و دنباله فیبوناچی با استفاده از توابع بازگشتی و غیربازگشتی. نحوه ایجاد کتابخانه با استفاده از فایلهای header و cpp

ویدیوی ضبط شده در کلاس به دلیل تنظیم نامناسب میکروفون، کیفیت صدای مناسبی ندارد اما به کارتان می آید:


  • حسین خسروی
  • ۰
  • ۰

دانشجویان درس شبکه عصبی، یکی از مقالات زیر را برای ارائه انتخاب کرده و به من اطلاع دهید.

بخش اول مقالات

بخش دوم مقالات


مثالهای متلب مطرح شده در کلاس

  • حسین خسروی
  • ۰
  • ۰

تفکیک یک رشته محاسباتی به چند بخش

مثالی که در کلاس مطرح شد جهت تسهیل حل تمرین سری سوم (بخش ج). در این مثال نحوه تفکیک یک رشته محاسباتی به دو بخش عددی نشان داده می شود:



#include "stdafx.h"
#include <iostream>

//Shahrood University of Technology
//C Programming
//Hossein Khosravi - http://Khosravi.blog.ir

using namespace std;
int main()
{
	char str[100] = "1625-4520";
	//str[4] = 0;
	//cout << str;
	char* p1 = strstr(str, "-");
	char s1[10] = { 0 }, s2[10] = { 0 };
	int n1 = 0, n2 = 0;
	if (p1 == NULL)
		cout << "operator - not found";
	else {
		cout << "operator - is located on index " << p1 - str;
		strncpy_s(s1, 10, str, p1 - str);
		strcpy_s(s2, 10, p1 + 1);
		n1 = atoi(s1); //convert first part to integer
		n2 = atoi(s2); //convert second part to integer
	}
	//char* p = str + 5;
	//cout << p;

	getchar();
    return 0;
}
  • حسین خسروی
  • ۰
  • ۰

برنامه ای بنویسید که یک تصویر با رزولوشن بالا (حداقل 2مگاپیکسل) را با یک فیلتر دلخواه دو بعدی (مثلا فیلتر سوبل 3x3 یا گاوسی 5x5) کانوالو کند.

این کار را یک بار در CPU و یک بار در GPU انجام دهید و زمان را مقایسه کنید.

image convolution - کانولوشن تصویر

موعد تحویل 21 آبان ماه

  • حسین خسروی
  • ۰
  • ۰

مثال دریافت n عدد اعشاری به کمک اشاره گر، مرتب سازی حبابی آنها و نمایش خروجی:


#include "stdafx.h"
#include <iostream>

int main()
{
	/*int x = 10, y = 21;
	float z = (float)y / x; //remove (float) and see the results 
	x = (int)z;
	printf("z = %.f", z);*/
	unsigned long N = 0;
	printf("Please enter N:\n");
GET_N:
	scanf_s("%ld", &N);
	if (N < 1)
	{
		printf("Invalid size, try again\n");
		goto GET_N;
	}
	printf("\nEnter %d Numbers: ", N);
	double* data = new double[N];

	memset(data, 0, N * sizeof(double));
	for (int i = 0; i < N; i++)
		scanf_s("%lf", &data[i]);
	
	for (int i = 0; i < N; i++)
	{
		for (int j = i + 1; j < N; j++)
		{
			if (data[j] > data[i])
			{
				double t = data[i];
				data[i] = data[j];
				data[j] = t;
			}
		}
	}

	printf("Sorted output:\n");
	for (int i = 0; i < N; i++)
		printf("%.2lf, ", data[i]);
	
	std::cin.ignore();
	getchar();
	return 0;
}
  • حسین خسروی