请教matlab运行出现matlab 改变矩阵维度度错误的问题

苹果/安卓/wp
积分 156, 距离下一级还需 104 积分
权限: 自定义头衔
道具: 彩虹炫, 涂鸦板, 雷达卡, 热点灯, 金钱卡, 显身卡, 匿名卡下一级可获得
权限: 签名中使用图片
购买后可立即获得
权限: 隐身
道具: 金钱卡, 彩虹炫, 雷达卡, 热点灯, 涂鸦板
开心签到天数: 1 天连续签到: 1 天[LV.1]初来乍到
为什么运行“demoLMsarsem_panel.m”时会出现:
错误使用&&*
内部矩阵维度必须一致。
出错 lmlag (line 46)
lm1 = (e'*W*y)/
出错 demoLMsarsem_panel (line 42)
lm1=lmlag(y,[xconstant x],W);
希望哪位高手指点下,十分感谢
还没有大神回答啊
是不是样本数据与矩阵维度不一致,
不一致应该怎么做呢
计算要遵循矩阵乘积的规则,内维一致,这是不能违犯的。可把*号改为 .*解决。
matlab-007 发表于
计算要遵循矩阵乘积的规则,内维一致,这是不能违犯的。可把*号改为 .*解决。改为.*仍然不能解决的怎么办?
请问你解决了吗?
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
如有投资本站或合作意向,请联系(010-);
邮箱:service@pinggu.org
投诉或不良信息处理:(010-)
论坛法律顾问:王进律师matlab索引超出矩阵维度,新手求助_百度知道
matlab索引超出矩阵维度,新手求助
语句是这样的:
f_abs = [2, 1, 0, 0, 3, 0, 0, 1, 0, 1, 0, 4, 0, 0, 2, 0, 1, 2, 0, 0, 3, 0, 1, 2, 0, 0, 3];/频数
bins = [17:1:43];
for i = 1:length(f_abs)
if f_abs(i) & 0
new = bins(i)*ones(1,f_abs(i));
我有更好的答案
求解符号函数矩阵的积分1当f为矩阵时,积分过程将对元素逐个进行。若定义了区间和变量,则区间和变量是对整个矩阵定义的。下面我们先生成符号函数矩阵,以供积分函数调用。2求符号函数矩阵的不定积分,积分代码及结果。3换种积分结果的显示方式,以更易于理解。
采纳率:96%
来自团队:
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。matlab矩阵维数不一致出错
已有 9692 次阅读
|个人分类:|系统分类:|关键词:matlab,复数,虚数,i,变量重定义,clear,|
&&& 使用matlab画电路传输函数图时,经常用到虚数符号&i&。但一不小心可能就出错噢。这不,刚才我就遇到两个问题:(1)、矩阵维数不一致;(2)、虚数符号&i&问题。 &&& 下面一一说明。&(1)、矩阵维数不一致&&& matlab矩阵运算需要各变量的维数一致,不然会出现&Inner matrix dimensions must agree&错误。例如:
% 功能说明:滤波器的传递函数(R0+R1)*ones(size(f))+
clcfmax=(10^4);f=[0:1:fmax];&&&&&&&&&&&&&&&&&& &% 1MHz,步进为0.1Hzw=2*pi*f;&&&&&&&&&&&&&&&&&&&&&&&&&&& &% 角频率与频率之间转换R0=( 1*10^4 )&&& R1=( 1*10^5 )C1=( (22)*10^(-6) )Rf=( 1*10^(5) )Hw=-w*(R0*Rf*C1*i)./( 1+w*(R0*R1*C1*i));
&&&&传输函数&Hw=-w*(R0*Rf*C1*i)./( 1+w*(R0*R1*C1*i))&中,w为1x10000的向量,而分母中&1+w*(R0*R1*C1*i)&表示常数&1&与w的向量相加,因此维数不一样,旧版的matlab会出错。但新版的matlab(如matlab7.0以上)不会出错,新版一把常数自动与w向量维数匹配上了。如果使用旧版matlab,可以这样:&Hw=-w*(R0*Rf*C1*i)./( ones(w)+w*(R0*R1*C1*i))&。
(1)、虚数符号&i&问题。&&& matlab默认时把符号&i&看作是虚数符号,因此下面这段程序看似没问题。但偶尔还会出问题的噢。如果在程序运行前已经存在i变量,而运行这段程序时没有清零变量,那么可能出现矩阵维数不一致问题。例如程序运行前,已存在变量i=[0:100,运行下面这段程序前未加&clear&清空变量,则此时matlab并未把&i&看作虚数符号。因此运行下面这段matlab代码时报错。
% 功能说明:滤波器的传递函数%syms w R0 R1 C1 Rf%Hw=-( R0+i*w*R0*R1*C1)*(i*w*Rf*C1)/( R0+R1+i*w*R0*R1*C1 ) ; %Hw=Hw*conj(Hw);&&&&&&&&% 共轭复数
clcfmax=(10^4);f=[0:0.1:fmax];&&&&&&&&&&&&&&&&&& &% 1MHz,步进为0.1Hzw=2*pi*f;&&&&&&&&&&&&&&&&&&&&&&&&&&& &% 角频率与频率之间转换R0=( 1*10^4 )&&& R1=( 1*10^5 )C1=( (22)*10^(-6) )Rf=( 1*10^(5) )Hw=-w*(R0*Rf*C1*i)./( (R0+R1)*ones(size(f))+w*(R0*R1*C1*i));H=abs(Hw) ;&&&&&&&&&&&&&&& % 取模H_theta=angle(Hw)/pi*180;& % 求相角
figure(1);loglog(f,H); grid on&&&&&&&& % 双对数坐标axis([0
3]);&& % 显示范围
&解决办法是,在每个.m文件前面加&clear&语句清空变量。如下:
% 功能说明:滤波器的传递函数%syms w R0 R1 C1 Rf%Hw=-( R0+i*w*R0*R1*C1)*(i*w*Rf*C1)/( R0+R1+i*w*R0*R1*C1 ) ; %Hw=Hw*conj(Hw);&&&&&&&&% 共轭复数
clcclearfmax=(10^4);f=[0:0.1:fmax];&&&&&&&&&&&&&&&&&& &% 1MHz,步进为0.1Hzw=2*pi*f;&&&&&&&&&&&&&&&&&&&&&&&&&&& &% 角频率与频率之间转换R0=( 1*10^4 )&&& R1=( 1*10^5 )C1=( (22)*10^(-6) )Rf=( 1*10^(5) )Hw=-w*(R0*Rf*C1*i)./( (R0+R1)*ones(size(f))+w*(R0*R1*C1*i));H=abs(Hw) ;&&&&&&&&&&&&&&& % 取模H_theta=angle(Hw)/pi*180;& % 求相角
figure(1);loglog(f,H); grid on&&&&&&&& % 双对数坐标axis([0
3]);&& % 显示范围
转载本文请联系原作者获取授权,同时请注明本文来自许培扬科学网博客。链接地址:
上一篇:下一篇:
当前推荐数:1
推荐到博客首页
评论 ( 个评论)
扫一扫,分享此博文
作者的精选博文
作者的其他最新博文
热门博文导读
Powered by
Copyright &matlab程序中大部分数据运行正常,少数数据会出现超出矩阵维度的问题,请问是什么原因_百度知道
matlab程序中大部分数据运行正常,少数数据会出现超出矩阵维度的问题,请问是什么原因
RT,出错语句应该是 tmp1(i)=interp1(X1(nnn),squeeze(zg(nnn,i,i1,i2)),u0_position(i));
是不是nnn的第一维数超过X1的维数了?
我有更好的答案
MATLAB是一种解释性语言,从运行效率来说肯定远不如其他基本语言。但还是有些方法可以提高运行速度的:1,MATLAB擅长于矩阵运算,但并不适用于循环,能不用循环的地方尽量用矩阵运算代替;2,对于大维度的矩阵,要预先确定它的维度,比如用zeros(a,b,c)预先定义好,这样每次给矩阵赋值的时候就不用改变维度了,对运算速度的提高很明显,这点你可以用MATLAB自带的tic和toc命令测试。3.对于多重循环的将长的循环放在内循环。还有对有相似功能的命令的选择也对速度有影响。如果对于计算量特别大的程序,用MATLAB是不怎么合适的哦,你可以把计算部分用其他语言,比如FORTRAN来实现。-
采纳率:77%
来自团队:
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。matlab提示我 错误使用 * 内部矩阵维度必须一致。应该怎么改_百度知道
matlab提示我 错误使用 * 内部矩阵维度必须一致。应该怎么改
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)*...
我有更好的答案
y2的表达式里有n,y=y1.*y2; 可以正确计算的前提是x与n的长度要一致,如果二者不一致,就会出现你看到的错误提示。MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
采纳率:100%
matlab中分为矩阵的乘法和普通的乘法。举一个例子,比如,A=[1 2 3
4 5 6]是一个2*3的矩阵,B=[1
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);应该就没问题了
本回答被网友采纳
MATLAB乘法:MATLAB进行的乘法是矩阵或者向量之间的乘法,因此必须满足矩阵的乘法规则才可以直接使用“*”。要想按照向量中的各元素相乘,需用“.*”,因此此处用“.*”即可
在工作空间检查矩阵的尺寸,要保证矩阵维度一致。
有代码吗?
替换*为.*替换/为./替换^为.^
其他3条回答
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 matlab 矩阵增加维度 的文章

 

随机推荐