博文
矩阵求逆的算法(2008-08-22 18:48:00)
摘要:用C写的,做成DLL使用很方便。
double * MatrixOpp(double A[],int m,int n) /*矩阵求逆*/
{
int i,j,x,y,k;
double *SP=NULL,*AB=NULL,*B=NULL,X,*C;
SP=(double *)malloc(m*n*sizeof(double));
AB=(double *)malloc(m*n*sizeof(double));
B=(double *)malloc(m*n*sizeof(double));
X=Surplus(A,m,n);
X=1/X;
for(i=0;i......
matcom下载地址(2008-06-16 14:18:00)
摘要:下载地址:http://www.pris.net.cn/down2/software.asp?id=1909
http://www.cnblogs.com/yunbo/archive/2006/10/17/530915.aspx
功能说明:
Matcom是一个十分有用的.m文件翻译器(Replacement),它的主要优点我认为有 以下几点: 1>它提供了matlab中.m文件与其他高级语言的接口,使.m文件可以编译为脱离 matlab环境独立执行的可执行性程序,这样 。提高了代码的复用率 。提高了代码的执行速度 。使纯文本的.m文件变为二进制的可执行程序,增加了知识保护的安全性 2>它提供了近千个数学函数,对于其他高级语言编译器来说,提供了一个丰富的[Matlab] 的数学库,基本上在matlab上能用的常用函数都可以在高级语言中直接调用。 数学函数主要包括: 。矩阵属性函数 。矩阵生成函数 。矩阵生成函数 。矩阵操作函数 。矩阵变换函数 。数学函数 。特殊函数 。数值函数 。串函数 。绘图函数 。颜色函数 。函数函数 。存盘及读文件 。系统资源函数 。系统操作函数 。判断函数(Is函数族) 。付氏变换 等等,可参见本文附录 提供了.m文件的方便快捷的编译调适环境,可以step, watch,breakpoint等各种 调试手段。 Matcom 4.5 的安装: 感谢energy的破解,Matcom4.5的口令为FREE-4.5-1193046-80295111 matcom4.5在安装时需要你输入口令,mideva在window的注册表中 HKEY_CURRENT_USER\Software\MathTools\Matcom\4.50\License\ 下面添加一个键,键名默认,键值为FREE-4.5-1193046-80295111 om\4.50\License\ 下面添加一个键,键名默认,键值为FREE-4.5-1193046-80295111 你如果删除它,再次启动matcom的时候,就会再次询问口令。 不过好在如果通过这个口令之后,程序发布时就不再有限制了,也 就是在这个注册后的系统中编译的程序,发布时就不用代一个注册文件了
------------------------------------------------......
合数分解成质数之和问题探究(2008-06-16 13:42:00)
摘要:原帖及讨论:http://bbs.bccn.net/thread-208692-1-1.html
1.将一个合数分解成多个质数,使分解的各个质数均不等、它们的和等于该合数,且它们中最大的质数最小
算法:DP,背包问题,复杂度约为O( (N/10)^2 )
#include<stdio.h>
#include<string.h>
#include<math.h>
#define SIZE 5000
#define SIZELINE 20000
int x[SIZE]={2},l; /*质数表*/
struct
{
char ok;
int l[200];
short p;
} countline[SIZELINE];
void qsort(int low,int high,int key[])
{
int i,j,tag;
i=low; j=high;
if(i<j)
{
tag=key[i];
do
{
while(tag<key[j] && i<j) j--;
if(i<j)
{
&n......
JPEG2000编码方案和结构划分研究(2008-06-06 21:06:00)
摘要:JPEG2000编码方案和结构划分研究
高勇 尹琦 李存华
(淮海工学院 计算机科学系,江苏 连云港 222005)
摘 要 JPEG2000作为一种先进的静止图像压缩标准,它的许多特征具有模块性。本文介绍了JPEG2000的压缩原理,描述了压缩系统的实现框架,讨论了其核心编码算法。在JPEG2000的压缩过程中,需要对图像的结构逐级进行划分,还要对码流结构进行分层次组织,以实施图像的渐进性传输。结构的划分作为JPEG2000的理论基础,有必要进行深入和准确的研究。
关键词 JPEG2000;图像压缩;嵌入编码;算术编码;小波变换
1 引言
JPEG2000 是新一代静止图像压缩标准,它采用了小波变换、优化截断嵌入块编码和高效的码流组织形式。适用于各种类型的静止图像,如二值图像、灰度图像和彩色图像;支持自然图像、合成图像、医学图像和文本。JPEG2000 具有如下主要特点:
①良好的低比特率压缩性能,以适应网络、移动通信等有限带宽的应用;
②能够根据图像质量、视觉感受和分辨率进行渐进传输;
③既支持无损又支持有损压缩;
④对码流的随机存取和感兴趣区域(ROI)的编码;
⑤具有较强的抗误码能力;
⑥具有开放结构,并向下兼容等。
2 JPEG2000基本编码方案
2.1 基本编码流程方案
JPEG2000的基本编码流程方案主要有以下6个部分组成(如图1):
(1)预处理:主要是将源图像划分为较小的矩形区域,称为拼接块,作为独立的图像用于压缩。目的是为了降低压缩过程所需的内存资源。降低量级可以使样本的动态范围基本关于零对称,使在进行离散小波......
0.618算法(matlab)(2008-05-01 13:21:00)
摘要:a=-1;
b=1;
l=.16;
x1=a+.382*(b-a);
x2=a+b-x1;
while(abs(b-a)>l)
f1=fun(x1);
f2=fun(x2);
if(f1>f2)
a=x1;x1=x2;x2=a+b-x1;
else b=x2;x2=x1;x1=a+b-x2;
end
end
answer=(a+b)/2;
调用
function f=fun(x)
f=2*x^2-x-1;
使用matlab描述......
huffman编码及译码(2008-04-14 22:41:00)
摘要:变量和内存的问题,原来是自己理解,通过写小代码来验证,但是总感觉有什么地方不对,使我很混乱,所以今天就在网上看了一些文章,然后重新认识了这个问题。下面算是我的认识,如果有不对的地方,请指出,多多交流................ 我是新手!!!
C++中内存的分配:
1.栈:是用来存放像一般变量和函数参数等的一块内存。系统会在变量生存期结束时自动释放内存,即把内存从栈中弹出。
2.堆:用来存放动态变量,如指针。要通过设计者自己管理变量,自行进行创建和清理工作。(利用new和delete)
3.自由存储区:就是那些由malloc等分配的内存块,他和堆是十分相似的,不过它是用free来结束自己的生命的。
4.全局/静态存储区:全局变量和静态变量被分配到同一块内存。
5.常量存储区:用来存储常量,即不能被修改的变量。
以上是内存分区的问题,下面是我理解的问题:
1.变量声明与定义:
声明只是告诉编译器有这么一个变量,而定义在声明的同时便进行内存分配。
//------1.cpp--------------
#include<iostream>
using namespace std;
extern int n;//声明变量n,只告诉有这么一个名字
void function(int a){....};//定义形参a,并分配内存
int main(){
int i; //定义变量i,并分配内存
return 0;
}
快速傅里叶变换(FFT)算法C++实现代码(2008-04-08 06:46:00)
摘要:#include <math.h>
#define DOUBLE_PI 6.283185307179586476925286766559
// 快速傅里叶变换
// data 长度为 (2 * 2^n), data 的偶位为实数部分, data 的奇位为虚数部分
// isInverse表示是否为逆变换
void FFT(double * data, int n, bool isInverse = false)
{
int mmax, m, j, step, i;
double temp;
double theta, sin_htheta, sin_theta, pwr, wr, wi, tempr, tempi;
n = 2 * (1 << n);
int nn = n >> 1;
// 长度为1的傅里叶变换, 位置交换过程
j = 1;
for(i = 1; i < n; i += 2)
{
if(j > i)
{
temp = data[j - 1];
data[j - 1] = data[i - 1];
&nbs......
DIT FFT2 改进版(2007-11-02 23:14:00)
摘要:/* Dev-C++ 4.9.9.2 下运行通过 2007.11.2 */
// 改进版,(把 1~ Num) --> (0~ Num-1)
/*****************fft programe*********************/
#include<math.h>
#include<stdio.h>
#include<stdlib.h>
struct complex {
double x;
double y;
};
#define STAGE 4
#define Num (1<<STAGE)
double result[Num];
struct complex s[Num];
const double PI = 3.14159265358979323846;
/* b1 ,b2 相乘的结果 b3 */
struct complex EE(struct complex b1,struct complex b2)
{
struct complex b3 ;
b3.x=b1.x*b2.x-b1.y*b2.y ;
b3.y=b1.x*b2.y+b1.y*b2.x ;
return(b3);
}
/* M_PI=3.14159265358979323846 为math.h 中定义的 pi 值 */
void FFT(struct complex *xin,int N)
{
int f,m,i,k,j,l ;
struct complex ......
DIT FFT2 示例(2007-11-02 22:35:00)
摘要:/* Dev-C++ 4.9.9.2 下运行通过 2007.11.2 */
//
/*****************fft programe*********************/
#include<math.h>
#include<stdio.h>
#include<stdlib.h>
struct complex {
double x;
double y;
};
#define Num 32
double result[Num+1];
struct complex s[Num+1];
const double PI = 3.14159265358979323846;
/* b1 ,b2 相乘的结果 b3 */
struct complex EE(struct complex b1,struct complex b2)
{
struct complex b3 ;
b3.x=b1.x*b2.x-b1.y*b2.y ;
b3.y=b1.x*b2.y+b1.y*b2.x ;
return(b3);
}
/* M_PI=3.14159265358979323846 为math.h 中定义的 pi 值 */
void FFT(struct complex *xin,int N)
{
int f,m,nv2,nm1,i,k,j=1,l ;
/*int f,m,nv2,nm1,i,k,j=N/2,l;*/
struct complex v,w,t ;
nv2=N/2 ;
f=N ;
......
FFT4 C程序(2007-05-15 11:44:00)
摘要:/* VC 下运行通过 2007。4。26 把radix4中某些层for->while等效 14:51*/
/*****************fft programe*********************/
void rad4(double x[],double y[],double TAB[],int i,int n2,int adr1,int adr2,int adr3)
{
int i1,i2,i3;
double co1,co2,co3,si1,si2,si3;
double r1,r2,r3,r4,s1,s2,s3,s4;
i1=i+n2;i2=i1+n2;i3=i2+n2; /* 数据位置 */
co1=TAB[2*adr1];co2=TAB[2*adr2];co3=TAB[2*adr3]; /* 旋转因子 */
si1=TAB[2*adr1+1];si2=TAB[2*adr2+1];si3=TAB[2*adr3+1];
r1=x[i]+x[i2];r3=x[i]-x[i2];
s1=y[i]+y[i2];s3=y[i]-y[i2];
r2=x[i1]+x[i3];r4=x[i1]-x[i3];
s2=y[i1]+y[i3];s4=y[i1]-y[i3];
x[i]=r1+r2; y[i]=s1+s2;
r2=r1-r2; r1=r3-s4;r3=r3+s4;
s2=s1-s2; s1=s3+r4;s3=s3-r4;
x[i1]=co1*r3+si1*s3;y[i1]=co1*s3-si1*r3;
x[i2]=co2*r2+si2*s2;y[i2]=co2*s2-si2*r2;......