输入一个数字i,然后生成i×i的矩阵,矩阵的内容沿45度线递增
如输入4,则矩阵为
0 1 5 6
2 4 7 12
3 8 11 13
9 10 14 15
Java源代码如下:
import java.io.*;
public class Zigzag {
public static void main(String[] args) throws IOException {
int a[][];
int size;
int input=0;
System.out.println("Input the zigzag's size: ");
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
// size=Integer.valueOf(in.readLine()).intValue();
//上下两句等价
size=Integer.parseInt(in.readLine());
a=new int[size][size];
/*总共有2×size-1条斜对角线,每条对角线上的元素和为对角线的序号*/
//输入上三角形的内容
//i其实就是对角线的序号,每个元素的的位置(x,y)保证为x+y=i
for(int i=0;i<size;i++){
if(i%2==0){
for(int j=i;j>=0;j--){ //从下向上
a[j][i-j]=input;
input++;
}
}else{
for(int j=0;j<=i;j++){ //从上向下
a[j][i-j]=input;
input++;
}
}
}
//输入下三角形的内容,下半部分总共有size-1条对角线
//i其实就是对角线的序号,每个元素的的位置(x,y)保证为x+y=2*size-1-i
for(int i=size-1;i>0;i--){
if(i%2==1){
for(int j=i;j>0;j--){ //从下向上
a[size-1-(i-j)][size-j]=input;
input++;
}
}else{
for(int j=0;j<i;j++){ //从上向下
a[size-i+j][size-1-j]=input;
input++;
}
}
}
//输出矩阵内容
for(int i=0;i<size;i++){
for(int j=0;j<size;j++){
System.out.print(a[i][j]+" ");
}
System.out.println();
}
}
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zsuguangh/archive/2011/03/26/6279216.aspx
分享到:
相关推荐
反Zig-Zag扫描(或称为逆Zig-Zag扫描)则是在解码过程中,将按Zig-Zag顺序排列的系数恢复为原来的8x8矩阵形式。"izigzag.m"这个文件很可能是实现这个功能的函数,它的操作步骤与Zig-Zag扫描相反: 1. 创建一个8x8的...
提供的“zig_zag.m”文件应该是用于执行Zig-Zag排序的MATLAB函数,它接受一个二维DCT系数矩阵作为输入,返回一个一维数组,按照Zig-Zag顺序排列了原始矩阵的元素。而“invzigzag.m”则是逆Zig-Zag排序的实现,它将...
在DCT得到的系数矩阵中,由于低频系数在左上角,高频系数在右下角,Zig-Zag扫描按照特定的路径(从左上到右下,类似锯齿形)顺序读取系数,这样可以将相似的系数连续排列,有利于熵编码(如哈夫曼编码)进一步压缩...
标题中的“数字图像里的zig-zag扫描图像”指的是利用Zig-Zag扫描方法对数字图像的二维像素矩阵进行重排,以便更有效地进行数据压缩。 Zig-Zag扫描的基本思想是将二维图像像素阵列按照一种从左上角到右下角的锯齿状...
在本例中,我们关注的是如何对二维数组进行Zig-Zag(锯齿形)扫描,这是一种特殊的遍历方式。Zig-Zag扫描意味着从左到右开始,然后每一行按照交替的方向进行,即第一行从左到右,第二行从右到左,以此类推。 首先,...
解码时,将编码后的数据按照逆zigzag顺序恢复为原始的DCT矩阵。 图像压缩的目标是减少存储空间,同时保持视觉质量。zigzag扫描结合熵编码(如霍夫曼编码或算术编码)有效地减少了数据量,使得JPEG成为一种广泛使用...
Zig Zag算法的核心思想是按照特定的路径遍历二维数组,通常用于将二维矩阵转换为一维序列。这种顺序使得连续的零值更容易聚集在一起,从而在游程编码过程中提高压缩效率。在图像处理中,这个数组通常是图像的离散...
这样,我们可以轻松地对任意大小的矩阵进行 Zig-Zag 编码。 Step 3: 将量化向量转换为 JPEG 定义的比特流 在 Matlab 中,我们可以使用现有的 AC 编码实现来实现量化向量到 JPEG 比特流的转换。我们可以使用 Matlab...
Zig-Zag扫描是与DCT紧密相关的一个概念,它主要用于量化后的DCT系数矩阵。在Zig-Zag扫描中,系数按照从左上角到右下角的锯齿形路径进行排序。这种顺序使得低频系数出现在前面,高频系数出现在后面。在熵编码阶段,如...
利用reshape函数将量化后的矩阵转为[1,64]行向量,利用zig向量按位取值,进行Zig-Zag扫描。 获取DC/AC系数中间格式: Rdcts_c_z为:其中第一个数-14为DC系数,剩余63个数为AC系数,左上角低频,右下角高频,可以...
适用任何矩阵的zigzag扫描,matlab
Zigzag扫描是将二维矩阵的数据顺序转换为一维序列的过程,有助于提高压缩效率。 在标题“zigzag的verilog实现”中,我们可以理解这个项目的目标是设计一个Verilog模块,它接收4*4的矩阵块数据,并按照Zigzag顺序将...
5. **Zig-Zag重排**:量化后的系数按照Zig-Zag顺序排列,以便于编码时连续的0更容易被表示。 6. **熵编码**:使用霍夫曼编码或算术编码对Zig-Zag序列进行编码,进一步压缩数据。MatLab可能需要自定义函数来实现这...
Zig-Zag排序是将量化后的系数按照特定顺序排列,使得低频系数位于前面,高频系数位于后面,这样可以进一步优化编码效率。在MATLAB中,可以通过编写自定义函数实现这一过程。霍夫曼编码是一种变长编码技术,频繁出现...
zig-zag扫描按照一定顺序将二维系数矩阵转换成一维序列,便于高效地去除连续零系数,并减少冗余。这一过程由`Scan_zigzag_4x4full()`函数完成。 #### 5. 反量化与逆变换 为了在解码端能够重构原始图像,编码器还...
最后,图像数据按照Zig-Zag顺序恢复为8x8矩阵,进行反Zig-Zag编码,再根据采样因子重组为原始图像的YCrCb格式,最后转换回RGB显示。 理解JPEG编解码原理不仅有助于开发基于STM32等微控制器的图像显示系统,也为图像...
在JPEG标准中,图像被分成8x8像素的块,每个块经过DCT变换后得到的一组系数进行量化,然后再通过Zig-Zag扫描,将二维的系数矩阵转换成一维的系数序列。这些系数中非零的值和它们在Zig-Zag扫描中的位置(Run/Size)被...
5. **Zig-Zag排序**:按照Zig-Zag顺序排列量化后的系数。 6. **熵编码**:使用哈夫曼编码或其他熵编码技术对排序后的系数进行编码。 7. **写入文件**:将编码后的数据以二进制格式写入文件。 在提供的“JPEG.rar...
本代码实现了从图像的像素值到其频率表示的转换,并通过量化、Zig-Zag扫描等步骤进一步处理。 ##### 2. 程序结构分析 - **命名空间** `DCT`: 包含了所有相关的类和方法。 - **主程序类** `Program`: - 初始化了一...