首页 > 其他分享 >矩阵乘法

矩阵乘法

时间:2023-05-16 21:13:18浏览次数:35  
标签:matrix mt int mat 矩阵 column 乘法 row

#include <iostream>
#include <iomanip>
using namespace std;
class matrix{
private:
    int row,column;
    int **mat;
public:
    matrix(const matrix& mx){
        this->row=mx.row;
        this->column=mx.column;
        this->mat=new int*[row];
        for (int i = 0; i <row ; ++i) {
            this->mat[i]=new int[column];
            for (int j = 0; j <column ; ++j) {
                this->mat[i][j]=mx.mat[i][j];
            }
        }
    }
    matrix(int r,int c){
        row=r;
        column=c;
            mat=new int*[row];
            for (int i = 0; i <row ; ++i) {
                mat[i]=new int[column];
                for (int j = 0; j <column ; ++j) {
                    mat[i][j]=0;
                }
            }
    }
    ~matrix(){
        for (int i = 0; i <row ; ++i) {
            delete []mat[i];
        }
        delete []mat;
    }
    void read(){
        for (int j = 0; j <row ; ++j) {
            for (int i = 0; i <column ; ++i) {
                cin>>mat[j][i];
            }
        }
    }
    matrix operator*(matrix& mt){
        if(this->row==1&&this->column==1){
            for (int i = 0; i < mt.row; ++i) {
                for (int j = 0; j <mt.column ; ++j) {
                    mt.mat[i][j]=this->mat[0][0]*mt.mat[i][j];
                }
            }
            return mt;
        }else{
            matrix rs(this->row,mt.column);
            for (int i = 0; i < this->row; ++i) {
                for (int j = 0; j <mt.column ; ++j) {
                    for (int k = 0; k <mt.row ; ++k) {
                        rs.mat[i][j]+=this->mat[i][k]*mt.mat[k][j];
                    }
                }
            }
            return rs;
        }
    }
    void display(){
        for (int i = 0; i <row ; ++i) {
            for (int j = 0; j <column ; ++j) {
                cout<<setw(10)<<mat[i][j];
            }
            cout<<endl;
        }
    }
};
int main()
{
    int r,c;
    cin>>r>>c;
    matrix m1(r,c);
    m1.read();
    int r1,c1;
    cin>>r1>>c1;
    matrix m2(r1,c1);
    m2.read();
    if(c==r1||r==1&&c==1){
        matrix m3=m1*m2;
        m3.display();
    }
    else{
        cout<<"Invalid Matrix multiplication!";
    }
    return 0;
}

标签:matrix,mt,int,mat,矩阵,column,乘法,row
From: https://www.cnblogs.com/yuanxinglan/p/17406802.html

相关文章

  • R语言股市可视化相关矩阵:最小生成树|附代码数据
    原文链接:http://tecdat.cn/?p=17835最近我们被客户要求撰写关于股市可视化的研究报告,包括一些图形和统计输出。本文在股市可视化中可视化相关矩阵 :最小生成树在本文示例中,我将使用日数据和1分钟数据来可视化股票数据。我发现以下概念定义非常有用: 连通图:在无向图中,若任......
  • 载波同步仿真,使用的是反馈补偿法,接收信号经补偿矩阵,误差提取,环路滤波,相位累加器后反馈
    载波同步仿真,使用的是反馈补偿法,接收信号经补偿矩阵,误差提取,环路滤波,相位累加器后反馈回补偿矩阵,稳定后估计相位趋近相位差,存在相位模糊情况ID:95200672832692285......
  • 基于递归最小二乘法(RLS)估算的车辆前后轮胎的侧偏刚度,如仿真结果图可知,在恒定转角,变化
    基于递归最小二乘法(RLS)估算的车辆前后轮胎的侧偏刚度,如仿真结果图可知,在恒定转角,变化车速度工况下,能够良好的估算出前后轮胎的平均刚度,该估算算法可生成代码,能够用于实车实验验证其他的算法参数需要,如横摆稳定性控制,路面附着系数估算算法等,为开发和学习节省大量时间。ID:33100694......
  • 【二分查找】LeetCode 74. 搜索二维矩阵思路
    题目链接74.搜索二维矩阵思路思路因为矩阵中每行都按升序排列,且每行的第一个整数大于前一行的最后一个整数。所以整个矩阵其实就是一个大的升序的一维数组,可以使用二分查找的方法对“一维数组”进行搜索,只不过在获取元素的过程中需要进行一步一维索引到二维索引的映射。代码......
  • python推荐系统实现(矩阵分解来协同过滤)|附代码数据
    原文链接:http://tecdat.cn/?p=10911最近我们被客户要求撰写关于推荐系统的研究报告,包括一些图形和统计输出。用户和产品的潜在特征编写推荐系统矩阵分解工作原理使用潜在表征来找到类似的产品1.用户和产品的潜在特征我们可以通过为每个用户和每部电影分配属性,然后将它们相乘......
  • m基于图像灰度共生矩阵纹理提取和GRNN神经网络的人口密度检测算法matlab仿真
    1.算法仿真效果matlab2013b仿真结果如下:  2.算法涉及理论知识概要       灰度共生矩阵,指的是一种通过研究灰度的空间相关特性来描述纹理的常用方法。[1] 1973年Haralick等人提出了用灰度共生矩阵来描述纹理特征。由于纹理是由灰度分布在空间位置上反复出现而形......
  • pmsm参数辩识 采用带遗忘因子的最小二乘法,一次性辩
    pmsm参数辩识采用带遗忘因子的最小二乘法,一次性辩识转动惯量、阻尼系数、负载转矩。收敛速度快,精度高。根据一篇论文复现的,带对应的论文和一些学习资料。学会方法后,通过rls和pmsm数学模型的灵活结合,也可以实现电机其他参数的辨识。。ID:2999664849700122......
  • 使用幂法求解矩阵的最大特征值及对应的特征向量
    使用幂法求解矩阵的最大特征值及对应的特征向量幂法简介幂法(PowerMethod)是一种迭代算法,主要用于求解矩阵的最大特征值及其对应的特征向量。这种方法特别适合于求解大型稀疏矩阵的最大特征值和特征向量。其主要步骤包括:选择一个初始向量\(v^{(0)}\)。迭代计算\(v^{(k+1)}=......
  • 2023-05-11:给你一个 m x n 的二进制矩阵 grid, 每个格子要么为 0 (空)要么为 1 (被占据), 给
    2023-05-11:给你一个mxn的二进制矩阵grid,每个格子要么为0(空)要么为1(被占据),给你邮票的尺寸为stampHeightxstampWidth。我们想将邮票贴进二进制矩阵中,且满足以下限制和要求:覆盖所有空格子,不覆盖任何被占据的格子,可以放入任意数目的邮票,邮票可以相互有重叠部分,邮......
  • 扩展欧几里得算法与乘法逆元
    扩展欧几里得算法基本知识整除的基本定义与性质定义\(设a,b∈Z且a≠0,若b除以a余数为0,则称a整除b,记为a∣b。若a不能整除b,则称a\nmidb。\)性质1\(a∣b⟺−a∣b⟺a∣−b⟺|a|∣|b|。\)性质2\(a∣b且b∣c⇒a∣c。\)性质3\(c∣a且c∣b⇒c∣na+mb......