---
title: ?laset
description: "初始化m*n的矩阵，且将对角线元素设置为beta，非对角线元素设置为alpha。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/240RC2/accel/kunpengaccel_kml_16_0563.html
sourcePath: /source/zh/kunpengboostkithistory/240RC2/accel/kunpengaccel_kml_16_0563.html
indexId: 4908dc837af4fa89ade655077f982d22246b8a42cfdef7b3f726ea84b3c636ce76
---
# ?laset

初始化m*n的矩阵，且将对角线元素设置为beta，非对角线元素设置为alpha。

#### 接口定义

C Interface：

void slaset_(const char *uplo, const int *m, const int *n, const float *alpha, const float *beta, float *a, const int *lda);

void dlaset_(const char *uplo, const int *m, const int *n, const double *alpha, const double *beta, double *a, const int *lda);

void claset_(const char *uplo, const int *m, const int *n, const float _Complex *alpha, const float _Complex *beta, float _Complex *a, const int *lda);

void zlaset_(const char *uplo, const int *m, const int *n, const double _Complex *alpha, const double _Complex *beta, double _Complex *a, const int *lda);

Fortran Interface：

SLASET(UPLO, M, N, ALPHA, BETA, A, LDA);

DLASET(UPLO, M, N, ALPHA, BETA, A, LDA);

CLASET(UPLO, M, N, ALPHA, BETA, A, LDA);

ZLASET(UPLO, M, N, ALPHA, BETA, A, LDA);


#### 参数

| 参数名 | 类型 | 描述 | 输入/输出 |
| --- | --- | --- | --- |
| UPLO | 字符型 | 'U'：矩阵A的上三角部分被初始化。 'L'：矩阵A的下三角部分被初始化。 其他：整个矩阵A都将被初始化。 | 输入 |
| M | 整数型 | 矩阵A的行数。 | 输入 |
| N | 整数型 | 矩阵A的列数。 | 输入 |
| ALPHA | 在slaset中为单精度浮点型。 在dlaset中为双精度浮点型。 在claset中为单精度复数型。 在zlaset中为双精度复数型。 | 矩阵A的非对角线元素值。 | 输入 |
| BETA | 在slaset中为单精度浮点型。 在dlaset中为双精度浮点型。 在claset中为单精度复数型。 在zlaset中为双精度复数型。 | 矩阵A的对角线元素值。 | 输入 |
| A | 在slaset中为单精度浮点型数组。 在dlaset中为双精度浮点型数组。 在claset中为单精度复数型数组。 在zlaset中为双精度复数型数组。 | 矩阵A，维度为（LDA,N）。 | 输出 |
| LDA | 整数型 | 矩阵A的主维。 | 输入 |


#### 依赖

#include "klapack.h"


#### 示例

C Interface：

```
const char uplo = 'U';
const int m = 4;
const int n = 4;
const int lda = m;
const double alpha = 2.0;
const double beta = 1.0;
double *a = (double*)malloc(lda * n * sizeof(double));
for (int i = 0; i < lda * n; i++) {
a[i] = -1;
}
dlaset_(&uplo, &m, &n, &alpha, &beta, a, &lda);
/*
* Output:
* a output (stored in column-major)
*
*  1.000000        2.000000        2.000000        2.000000
*  -1.000000       1.000000        2.000000        2.000000
*  -1.000000       -1.000000       1.000000        2.000000
*  -1.000000       -1.000000       -1.000000       1.000000
```

Fortran Interface：

```
CHARACTER :: uplo = "U"
PARAMETER (m = 4)
PARAMETER (n = 4)
PARAMETER (lda = 4)
REAL(8) :: alpha
REAL(8) :: beta
REAL(8) :: a(lda, n)
DATA alpha / 2.0 /
DATA beta / 1.0 /
DATA a / -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 /
EXTERNAL DLASET
CALL DLASET(uplo, m, n, alpha, beta, a, lda);
*
* Output:
* a output (stored in column-major)
*  1.000000        2.000000        2.000000        2.000000
*  -1.000000       1.000000        2.000000        2.000000
*  -1.000000       -1.000000       1.000000        2.000000
*  -1.000000       -1.000000       -1.000000       1.000000
```
