1. 编写一个M函数,用于计算两个矩阵的积(两个矩阵作为输入参数,不能使用矩阵乘运算符)。

供稿:hz-xin.com     日期:2025-01-19
Matlab编程:给定矩阵A和B,请写一函数计算两矩阵的乘积,A和B作为该函数的输入参数,要求要判断两个矩阵是

第一楼的程序错误,没有提示输入A,B矩阵!
我把程序修改后完全能实现,运行时提示输入A,B矩阵,且能得结果!
程序源码如下:
function C=bicu(A,B)
A=input('A matrix=') ;
B=input('B matrix=');
[m1,n1]=size(A);
[m2,n2]=size(B);
if n1==m2
C=zeros(m1,n2);
for i=1:m1
for j=1:n2
for k=1:n1
d=A(i,k)*B(k,j);
C(i,j)=C(i,j)+d;
end
end
end
else disp(['Matrix A and B could not be multiplied']);
end
保存为bicu.m后即可运行!
希望能对你有帮助!

你可定义你的参数为 符号变量哦。
比如下面的MATLAB程序:
>> syms a b c d;
x=[a b; c d];
y=[d;a];
x*y

ans =

a*b + a*d
a*d + c*d

function C=ji(A,B)
[M N]=size(A);
[m n]=size(B);
if N~=m
error('前者列数与后者行数不同,无法相乘!');
else
for p=1:M
for q=1:n
for t=1:N
D(p,q,t)=A(p,t)*B(t,q);
end
C(p,q)=sum(D(p,q,:));
end
end
end

MATLAB概论
MATLAB是世界流行的优秀科技应用软件之一。具有功能强大(数值计算、符号计算、图形生成、文本处理及多种专业工具箱)、界面友好,可二次开发等特点。在国内外,已有许多高等院校将其列为本科生、研究生和博士生必须掌握的基本技能。
1起源与发展
自1984年由美国MathWorks公司推向市场以来,先后发布了多个版本,1993年发布4.0版,1995年发布4.2c版,1996年发布5.0版,1997年发布5.1版,1999年发布5.3版,2000年发布6.0版,目前发布的为6.5版。
2基本组成
MATLAB主要由MATLAB主程序、Simulink动态仿真系统和MATLAB工具箱三大部分组成。其中MATLAB主程序包括MATLAB语言、工作环境、句柄图形、数学函数库和应用程序接口五个部分;Simulink是用于动态系统仿真的交互式系统,允许用户在屏幕上绘制框图来模拟系统并能动态地控制该系统;工具箱则是MATLAB的基本语句编写的各种子程序集和函数库,用于解决某一方面的特定问题或实现某一类的新算法,是开放的,可以根据需要扩充。
3通用命令
通用命令是在MATLAB命令窗口中直接键入并执行。常见的如下表所列。
名称 功能说明
clear 清除内存中所有的或指定的变量和函数
cd 显示和改变当前工作目录
clc 擦除MATLAB工作窗口中所有显示的内容
clf 擦除MATLAB工作窗口中的图形
dir 列出当前或指定目录中的文件清单
disp 在运行中显示变量或文字内容
echo 控制运行的文字命令是否显示
hold 控制当前的图形窗口对象是否被刷新
home 擦除命令窗口中的全部内容
pack 收集内存碎片以扩大内存空间
quit 关闭并退出MATLAB
type 显示所指定文件的全部内容
exit 退出MATLAB
4帮助文件
MATLAB为用户提供了非常详尽的帮助文件,最常见的帮助命令是help,直接输入help则列出全部信息,help后加对象则提示对象帮助信息。
MATLAB的基本矩阵运算
1 简单矩阵输入
MATLAB最基本、也是最重要的功能就是进行实数矩阵或者复数矩阵的运算。由于向量可作为矩阵的一行或者一列,标量(一个数)则可以作为只含有一个元素的矩阵,故向量和标量都可以作为特殊矩阵来处理。MATLAB的操作和命令对于矩阵而言,和我们平时使用的形式很相似,但它还有自己的一些规定。
一、键盘输入
对于比较小的简单矩阵,可以使用键盘直接输入,例如:
a=1;b=2;c=3
x=[5 b c;a*b a+c c/b]
x =
5.0000 2.0000 3.0000
2.0000 4.0000 1.5000
矩阵生成不但可以使用纯数字,也可以使用变量。矩阵的元素直接排列在方括号内,每行内的元素使用空格或者逗号分开,行与行之间使用分号隔开。大的矩阵可以分行输入,用回车键代替分号,这和我们平时使用的矩阵形式很相近。例如
a=[1 2 3
4 5 6]
大部分的试验数据使用上面的形式给出的,在处理试验数据中,可以简单的将数据前后加入左右括号,就可以得到矩阵的表示。这种处理可以在脚本文件中进行。
二、矩阵生成
MATLAB提供了很多生成和操作矩阵的函数。下面给出几个创建矩阵的例子。
如果是线性等间距格式生成矩阵,可以使用from:step:to方式。from、step、to分别表示开始值、步长和结束值。例如
a=1:2:10
a =
1 3 5 7 9
还可以使用linspace命令,如:
a=linspace(1,10,5)
a =
1.0000 3.2500 5.5000 7.7500 10.0000
linespace的三个参数表示开始值、结束值和数据个数。数据个数可以省略,缺省值为100。
在画Bode图等应用中,需要使用对数等间隔的数据,可以使用logspace命令生成。Logspace和linspace的参数相同,只是结果不同。
2 矩阵运算
矩阵运算是MATLAB的基础,MATLAB的矩阵运算功能十分强大,并且运算的形式和一般的数学表示十分相似。
一、矩阵的转置
矩阵的转置用符号 ’
a=[1 2 3;4 5 6]
a =
1 2 3
4 5 6
b=a'
b =
1 4
2 5
3 6
如果矩阵a为复数矩阵,则a’为共轭转置。
a=[1 2;4 5], d=a+a*i,c1=d',c2=conj(d),


1. 编写一个M函数,用于计算两个矩阵的积(两个矩阵作为输入参数,不能...
function C=ji(A,B)[M N]=size(A);[m n]=size(B);if N~=m error('前者列数与后者行数不同,无法相乘!');else for p=1:M for q=1:n for t=1:N D(p,q,t)=A(p,t)*B(t,q);end C(p,q)=sum(D(p,q,:));end end end ...

利用函数计算素数个数并求和 输入两个正整数m,n(1<=m,n<=500),统计并...
int prime(int a);include<math.h> int main(){ int m,n,a,i,count=0,sum=0;printf("输入正整数m>=1,n<=500:\\n");scanf("%d%d",&m,&n);for(i=m;i<=n;i++){ if(prime(i)){ count++;sum=sum+i;} } printf("素数个数为:%d,素数的和为:%d",count,sum);return 0...

c语言编写一个函数,求两数中的最小数。在主函数中输入两个数,调用函...
printf("最小数是:%d\\n", m); \/\/输出最小数 double s = sqrt(m); \/\/调用sqrt函数,计算最小数的平方根,并赋值给s printf("最小数的平方根是:%f\\n", s); \/\/输出平方根 return 0;}

1. 编写一个自定义函数Gcd(m,n),实现求m和n两个正整数的最大公约...
m=mod(m,n)n=mod(n,m)直到零位置的非零值。例如:include <stdio.h> int gcd, lcm;int m,n;void fun(void){ int a=m, b=n,t;while(b){ t=a%b;a=b;b=t;} gcd=a;lcm=m\/a*n;} int main(){ scanf("%d%d",&m,&n);fun();printf("%d and %d 's gcd is %d, lcm...

设计一个函数,计算两个正整数的最小公倍数
include <stdio.h>int hct(int m,int n);int Icd(int m,int n,int h);int main(){ int a,b; int c[2]; printf("请输入两个数:"); scanf("%d,%d",&a,&b); c[0]=hct(a,b); c[1]=Icd(a,b,c[0]); printf("最大公约数为:%d\\n",c[0]); printf("最小公倍数为...

编写一个函数实现求两个数和的立方,并在主函数main()中调用该函数
include"stdio.h"int li(int x,int y){ return x*x*x+y*y*y;} main(){ int a,b,sum;printf("please input a and b:");scanf("%d%d",&a,&b);sum=li(a,b);printf("sum=%d\\n",sum);} 不懂留言!

C语言:写一个函数:有m,n两个数,输出m后n个连续的素数... 例如:输入17...
include<stdio.h> int main(){ int i,j,n,m;scanf("%d%d",&m,&n);for (i=(m+1);n;i++)\/\/ { for (j=2;i%j;j++);\/\/空循环检测素数 if (j==i){ printf("%10d",i);\/\/输出素数 n--; \/\/n为0,退出外层for循环,结束程序 } } } ...

编写一个函数,求两个整数的和与成积。
%dx%d=%d\\n",x,y,s,x,y,v);return 0;} === 如果考虑较大的乘积,变量 v 可以考虑用 double 型, 例如:void fun(int a, int b, int *sum, double *v){...} 主函数里 double v; v 的输出格式用 %g printf("%d+%d=%d %dx%d=%g\\n",x,y,s,x,y,v);...

matlab编写M函数文件,要求具有两个输入变量:A和n,对于输入矩阵A,找出...
假设函数名为fun(可以自己改)新建一个M文件,保存一下内容:function x=fun(A,n)x=A(:);id=find(A<n);x(id)=[];运行过程如:>> A=[1 2 1 3;4 3 4 3;3 2 3 4];n=2;>> x=fun(A,n)

用C语言编写一个求两个数最大值的函数,在主函数输入3个整数,调用该函数...
include<iostream> using namespace std;int max(int,int);int max(int m,int n){return(m>n)?m:n;} int main(){ cout<<"请输入3个整数"<<endl;int x,y,z;cin>>x>>y>>z;cout<<"这三个整数中最大的是:";cout<< max(max(x,y),z)<<endl;} ...