之字形打印矩阵

之字形打印就比较有趣(烦人)了,大概是这个样子
在这里插入图片描述
还是要从宏观调度上考虑,如果抠死在局部下标的变化上,可能会死。

先画对角线
设置变量A,B
在这里插入图片描述
A往右走,走到最右就往下,B往下走,走到最下就往右
在这里插入图片描述
在这里插入图片描述
然后只要实现一个函数,功能为:已知一条对角线的左下角和右上角,打印这条对角线。
最后,一条从下往上打印,一条从上往下打印,之字形打印就实现了

code:

#include<iostream>
#include<vector>

using namespace std;

class ZigZagPrintMatrix {
public:
    void printLevel(vector<vector<int>> m, int tR, int tC, int dR, int dC, bool f){
        if(f){
            while(tR!=dR+1)
                cout<<m[tR++][tC--]<<" ";
        }
        else{
            while(dR!=tR-1)
                cout<<m[dR--][dC++]<<" ";
        }
    }
    void printMatrixZigZag(vector<vector<int>> matrix) {
        int aR=0;
        int aC=0;
        int bR=0;
        int bC=0;
        int endR=matrix.size()-1;
        int endC=matrix[0].size()-1;
        bool fromUp=false;
        while(aR!=endR+1){
            printLevel(matrix,aR,aC,bR,bC,fromUp);
            aR=aC==endC?aR+1:aR;
            aC=aC==endC?aC:aC+1;
            bC=bR==endR?bC+1:bC;
            bR=bR==endR?bR:bR+1;
            fromUp=!fromUp;
        }

    }
};

int main(){
    vector<vector<int>>matrix;
    for(int i=0;i<2;i++){
        vector<int>temp;
        for(int j=0;j<5;j++){
           int data;
           cin>>data;
           temp.push_back(data);
        }
        matrix.push_back(temp);
    }
    ZigZagPrintMatrix test;
    test.printMatrixZigZag(matrix);

    return 0;

}

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在MATLAB中仿真8字形标量声传感器的阵列排布,可以使用`phased.ConformalArray`对象来创建。 以下是一个示例代码,展示了如何在MATLAB中仿真一个8字形标量声传感器的阵列排布并进行声场仿真: ```matlab % 定义传感器参数 numElements = 8; % 接收元素数量 elementSpacing = 0.5; % 元素间距离(假设) arrayRadius = 1; % 阵列半径(假设) arrayOrientation = 0; % 阵列方向(假设) % 创建8字形标量声传感器接收阵列 array = phased.ConformalArray('Element', phased.OmnidirectionalMicrophoneElement, ... 'NumElements', numElements, 'ElementSpacing', elementSpacing); % 设置阵列位置和方向 x = arrayRadius * cosd(0:45:315); % X坐标 y = arrayRadius * sind(0:45:315); % Y坐标 z = zeros(1, numElements); % Z坐标(假设所有元素都在同一平面) pos = [x; y; z]; % 阵列位置矩阵 array.ElementPosition = pos; array.ElementNormal = repmat([cosd(arrayOrientation); sind(arrayOrientation); 0], 1, numElements); % 定义声源位置和方向 sourcePos = [0; 0; 0]; % 声源位置 sourceDir = [1; 0; 0]; % 声源方向 % 进行声场仿真 fc = 1000; % 信号频率 c = 343; % 声速 fs = 44100; % 采样率 t = (0:1/fs:1).'; % 时间序列 signal = sin(2*pi*fc*t); % 信号 receivedSignal = collectPlaneWave(array, signal, sourceDir, sourcePos, c, fs); % 打印接收到的信号 disp(receivedSignal); ``` 在上述代码中,我们首先定义了传感器的参数,包括接收元素数量、元素间距离、阵列半径和阵列方向。然后,使用`phased.ConformalArray`创建了一个8字形标量声传感器接收阵列,并设置了阵列的位置和方向。接下来,我们定义了声源的位置和方向。最后,使用`collectPlaneWave`函数进行声场仿真,计算在给定声源位置和方向下,阵列接收到的信号。 请注意,这只是一个简单的示例代码,用于展示如何在MATLAB中进行8字形标量声传感器阵列排布的仿真。根据实际需求,您可能需要根据具体的阵列参数和声场设置进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值