You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用C语言从现有2×3矩阵创建50倍比例放大的100×150矩阵?

C语言实现矩阵按比例放大的方法

需求说明

现有初始2行3列矩阵tab[2][3],元素如下:

1 0 1
0 1 0

需要创建一个100行150列的放大矩阵tab[100][150],行和列均按50倍比例放大,元素取值规则为:

  • 目标矩阵的第0-49行:第0-49列值为1,第50-99列值为0,第100-149列值为1
  • 目标矩阵的第50-99行:第0-49列值为0,第50-99列值为1,第100-149列值为0

注:需求中描述的row 0 to 50、col 0 to 50为范围表述误差,实际按50倍放大的话,每行/列块应包含50个元素,对应索引区间为[n*SCALE, (n+1)*SCALE - 1],其中SCALE=50。

实现方法

方法一:直接按规则赋值

针对当前固定的矩阵和放大倍数,直接通过条件判断赋值,代码简洁直观:

#include <stdio.h>

#define ROWS 100
#define COLS 150
#define SCALE 50

int main() {
    int dest[ROWS][COLS];
    
    // 填充目标矩阵
    for (int i = 0; i < ROWS; i++) {
        for (int j = 0; j < COLS; j++) {
            if (i < SCALE) {
                // 原矩阵第0行的放大块
                dest[i][j] = (j < SCALE || j >= 2 * SCALE) ? 1 : 0;
            } else {
                // 原矩阵第1行的放大块
                dest[i][j] = (j >= SCALE && j < 2 * SCALE) ? 1 : 0;
            }
        }
    }
    
    // 可选:打印前几行验证结果
    printf("目标矩阵前5行前10列:\n");
    for (int i = 0; i < 5; i++) {
        for (int j = 0; j < 10; j++) {
            printf("%d ", dest[i][j]);
        }
        printf("\n");
    }
    
    return 0;
}

方法二:通用放大逻辑(适配任意初始矩阵和放大倍数)

如果后续需要更换初始矩阵或调整放大比例,这种通用方法更灵活,通过计算目标元素对应的原矩阵元素索引来赋值:

#include <stdio.h>

#define SRC_ROWS 2
#define SRC_COLS 3
#define SCALE 50
#define DEST_ROWS (SRC_ROWS * SCALE)
#define DEST_COLS (SRC_COLS * SCALE)

// 初始矩阵
int src[SRC_ROWS][SRC_COLS] = {
    {1, 0, 1},
    {0, 1, 0}
};

int main() {
    int dest[DEST_ROWS][DEST_COLS];
    
    // 遍历目标矩阵的每个元素
    for (int i = 0; i < DEST_ROWS; i++) {
        for (int j = 0; j < DEST_COLS; j++) {
            // 计算当前元素对应的原矩阵行、列索引
            int src_row = i / SCALE;
            int src_col = j / SCALE;
            // 赋值
            dest[i][j] = src[src_row][src_col];
        }
    }
    
    // 可选:验证结果,打印第50行(原矩阵第1行的起始行)前10列
    printf("目标矩阵第50行前10列:\n");
    for (int j = 0; j < 10; j++) {
        printf("%d ", dest[50][j]);
    }
    printf("\n");
    
    return 0;
}

代码说明

  • 方法一适合当前固定需求,直接硬编码条件,执行效率高;
  • 方法二更通用,只需修改SRC_ROWS、SRC_COLS、SCALE和初始矩阵src,即可实现不同矩阵的放大,维护性更强;
  • 两种方法都通过嵌套循环遍历目标矩阵,根据规则或索引映射完成赋值,最终得到符合要求的放大矩阵。

内容的提问来源于stack exchange,提问作者Musa Tombul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 16:30:59