matlab报错矩阵维度不一致如何解决? 5

新人不太会,请教一下为什么这里matlab一直报错“矩阵维度不一致”,希望有大神帮忙改正程序clear;r=1;x=[102030406090];y=[204030905... 新人不太会,请教一下为什么这里matlab一直报错“矩阵维度不一致”,希望有大神帮忙改正程序
clear;
r=1;
x=[10 20 30 40 60 90 ];
y=[20 40 30 90 50 70 ];
p=polyfit(x,y,3);
plot(x,y,'r');
dp=polyder(p);
X=polyval(p,y);
Y=polyval(p,x);
X0=X-r*sin(atan(dp));
Y0=Y-r*cos(atan(dp));
X1=X-r*sin(atan(dp));
Y1=Y-r*cos(atan(dp));
hold on
p0=polyfit(X0,Y0,3);
p1=polyfit(X1,Y1,3);
plot(X0,Y0,'b');
plot(X1,Y1,'b');
展开
 我来答
帐号已注销
2021-03-27 · TA获得超过2.7万个赞
知道大有可为答主
回答量:3.9万
采纳率:97%
帮助的人:1285万
展开全部
matlab中矩阵维数不一致,可能是之前定义了一个矩阵,后来又定义了一个同名矩阵,2个矩阵维数不同,混用在一起了。

还可能矩阵未定义。

MATLAB错误记录:错误使用 cat 串联的矩阵的维度不一致
今天想用matlab读取一个数据文件。用importdata读入后照例储存成了cell类型。但当我想用cell2mat将其转化为矩阵时却出现了这个问题:

错误使用 cat 串联的矩阵的维度不一致

经检查后发现,cell数组中每个元胞中存储的格式并非double,而是char数组。而且每一行char的长度不一致,从而引发了这个错误。于是我首先想到的解决思路是:

用char()函数把每个元胞的长度统一。

也确实统一了。但随后当我想用str2num()将char数组转换为数字时,却又出现了另一个问题:

y = str2num(x)返回值为空值[]

这很奇怪,于是我检查了一下我的每行字符串数组。发现它存在着古怪的格式问题。举例来说,在原始文件中数据本来是这样的:0.00
但是导入到matlab里以后就变成了了这样:0 . 0 0

数字之间存在的看似空格的空白字符导致str2num()函数无法正常使用。

在这种情况下,不得不对这些空格进行删除。但我的数据量很大,手动删除是不现实的。因此不得已使用了这个函数命令:

y = strrep(x,’ ‘,’’);

结果发现,很奇怪的是,这些空格依然存在。我自己随便编了一个字符串调用这个函数,结果证明函数是可以使用的。可见,数据中这些看似空格的空白字符实际上并非空格。经过试验,他们也不是制表符。由于时间有限,我最终并没有去确认这些空白字符到底是什么。只是简单地将字符串中其中一个空白字符赋给了一个变量作为样例。操作过程大致如下:

d = x(5);
y = strrep(x,x(5),‘’)

结果证明这样做是有效的
昆河夜语

2021-03-26 · TA获得超过4.7万个赞
知道大有可为答主
回答量:2.5万
采纳率:100%
帮助的人:844万
展开全部
matlab报错矩阵维度不一致如何解决?matlab中分为矩阵的乘法和普通的乘法。
举一个例子,比如,
A=[1 2 3
4 5 6]
是一个2*3的矩阵,
B=[1
3
9]
是一个3*1的矩阵,
C=10;是一个数
当希望算矩阵的乘法时,X=A*B,得到的X是一个2*1的矩阵
当希望矩阵B中每一个数都乘以系数C时,语句为X=A.*B,乘号前有一个点,
对于数组,可以当做矩阵处理,一般情况下都应点乘。
在你的例子中,应该改为
Za=(u0./(2.*pi)).*ms.*((R.*R-x.*x).*sin(IS)-2.*R.*x.*cos(IS))./((R.^2+x.^2).^2);
Ha=-(u0./(2.*pi)).*ms.*((R.*R-x.*x).*cos(IS)+2.*R.*sin(IS))./((R.^2+x.^2).^2);
DeltaT=(u0./(2.*pi)).*ms.*((R.*R-x.*x).*(sin(IS).*sin(I0)-cos(IS).*cos(I0).*cos(A)))-2.*R.*x.*cos(IS).*sin(Is).*cos(I0).*cos(A)./((R.^2+x.^2).^2)。y2的表达式里有n,y=y1.*y2; 可以正确计算的前提是x与n的长度要一致,如果二者不一致,就会出现你看到的错误提示。
MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
暗送秋浡365
2019-01-28 · TA获得超过4660个赞
知道大有可为答主
回答量:6401
采纳率:78%
帮助的人:312万
展开全部
matlab中分为矩阵的乘法和普通的乘法。
举一个例子,比如,
A=[1 2 3
4 5 6]
是一个2*3的矩阵,
B=[1
3
9]
是一个3*1的矩阵,
C=10;是一个数
当希望算矩阵的乘法时,X=A*B,得到的X是一个2*1的矩阵
当希望矩阵B中每一个数都乘以系数C时,语句为X=A.*B,乘号前有一个点,
对于数组,可以当做矩阵处理,一般情况下都应点乘。
在你的例子中,应该改为
Za=(u0./(2.*pi)).*ms.*((R.*R-x.*x).*sin(IS)-2.*R.*x.*cos(IS))./((R.^2+x.^2).^2);
Ha=-(u0./(2.*pi)).*ms.*((R.*R-x.*x).*cos(IS)+2.*R.*sin(IS))./((R.^2+x.^2).^2);
DeltaT=(u0./(2.*pi)).*ms.*((R.*R-x.*x).*(sin(IS).*sin(I0)-cos(IS).*cos(I0).*cos(A)))-2.*R.*x.*cos(IS).*sin(Is).*cos(I0).*cos(A)./((R.^2+x.^2).^2);
应该就没问题了
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式