找回密码
 注册
关于网站域名变更的通知
查看: 483|回复: 3
打印 上一主题 下一主题

关于Matrix dimensions must agree错误的问题

[复制链接]
  • TA的每日心情
    难过
    2019-11-20 15:02
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2020-5-27 15:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    Matrix dimensions must agree错误的中文解释是:矩阵的维数必须一致 出错原因:这是由于运算符(= + - / * 等)两边的运算对象维数不匹配造成的,典型的出错原因是错用了矩阵运算符。matlab 通过“.”来区分矩阵运算和元素运算。
    : y' e9 d+ v- a: ]& i) R7 r; u! j; `( Y; x0 z
    我看了一些论坛讨论的这个错误,一般都是“乘”和“点乘”弄错了,可是我下面的程序是涉及加法的,而且维数是直接把要相加的第一个矩阵的维数赋值给第二个矩阵,不知道为什么还会出错,请高手指点!
    ' x8 I. p  g1 |0 v! s, y
    & x/ X8 x  R+ ?6 K7 l  Wshiyan.m的程序体为:
    9 Q& M$ n% f  A* L  ?: W# A; a6 v/ P4 j
    [I,M]=imread('123.tif');  c4 S5 v+ ?. C3 j5 [& y9 [8 C
    [m,n]=size(imread('123.tif'));
    & Q. h2 B( }7 o4 J5 H' LJ=imnoise(I,'gaussian',0,0.02);
    6 E4 q- k* ?, {* a! q- z! Y0 esubplot(1,3,1),imshow(I,M),title('original image');$ I4 z( U9 s2 d& D5 `
    subplot(1,3,2),imshow(J,M),title('managed image');* p7 P" H) c2 o8 L
    K=ones(m,n);4 j3 G# }1 q8 x- z; S# X8 \- w/ X% X
    for i=1:1:100
    4 d: T8 d# w! c    J=imnoise(I,'gaussian',0,0.02);
    " [& @7 A! T) F( Y9 A    J1=im2double(J);2 B/ n7 q6 |' w9 M( H
        K=K+J1;      %第10行( v1 F) U3 ]4 d# a4 R( k2 U
    end5 A4 y) V  h8 x  R; i7 A4 q$ G
    K=K/100;       %求图像的平均3 S5 f, M! U7 z8 K: Z) N5 Y1 C
    subplot(1,3,3),imshow(K),title('result image');% k4 M! d$ X$ F

    / r6 P- u  q7 \+ r
    # e% _4 B: Q/ |% p运行的时候出现这个错误:2 R0 F! C/ T7 j4 f
    : S, H- T. {$ I, M+ v6 x" F0 F
    ??? Error using ==> plus* k+ v6 n: n9 A
    Matrix dimensions must agree.
    ' b. `5 p3 Q3 j) r. c/ M& f$ vError in ==> shiyan at 10+ D1 _1 G: P8 x( [
        K=K+J1;( M5 O# N2 D7 i  O) M

    3 W( c; x7 ?3 d5 e5 _

    该用户从未签到

    2#
    发表于 2020-5-27 16:26 | 只看该作者

    : s# \( B6 v5 K5 R7 Bsize(K)
    ' r( B  h# j$ v4 P( P1 N/ u; K# l* ^  n* v7 X
    size(J1)
    ( Y$ P6 c  g8 D* E0 y; q
    0 I. Q- r+ Y3 Q. l. [5 q) q看看显示什么

    点评

    多谢,明白了。原来它们两个的维数真的是不同的。 将程序改为如下形式就对了: %导入图像的同时将图像分为行和列元素 =imread('123.tif'); %对图像进行加噪声 J=imnoise(I,'gaussian',0,0.02); %显示图像 s  详情 回复 发表于 2020-5-27 16:27
  • TA的每日心情
    难过
    2019-11-20 15:02
  • 签到天数: 1 天

    [LV.1]初来乍到

    3#
     楼主| 发表于 2020-5-27 16:27 | 只看该作者
    NingW 发表于 2020-5-27 16:264 [! Q4 ]8 t7 b7 M1 u/ V& n
    size(K)7 H+ ?6 G4 A0 r  g$ B8 Q7 X
    & u: Q, @1 _" s% d) r0 [; s
    size(J1)
    8 ?, J6 d# f: i% s
    多谢,明白了。原来它们两个的维数真的是不同的。
    + X7 i: n  N9 W7 m1 {# |) h+ g8 n1 r* r) p
    将程序改为如下形式就对了:* k% f# f7 z: g# O. W
    %导入图像的同时将图像分为行和列元素/ c0 }: Q2 G: g" k! l& R9 t5 m
    [I,M]=imread('123.tif');
    ; ~; z# ~/ e- V2 Q6 k%对图像进行加噪声
      g* u  m2 I- A) H0 s9 y# u  U3 lJ=imnoise(I,'gaussian',0,0.02);
    5 @0 u6 o7 Y* J$ d. i%显示图像6 v* k& o; {3 k! W
    subplot(1,3,1),imshow(I,M),title('original image');
    2 W; [4 E& B- ?subplot(1,3,2),imshow(J,M),title('managed image');
    6 Z0 l8 H5 ^3 L%创建与原图像一样维数的全0矩阵
    / n1 a* l9 {/ ]) s* YJ1=im2double(J);
    + N* P) T5 H6 ^K=ones(size(J1));1 S+ l) D5 h6 m" k* Q
    %循环100对图像加噪声然后累加
    , I7 L7 [+ C6 Q$ T9 y0 qfor i=1:1:100
    1 C. q! H1 U. @3 K& q    J=imnoise(I,'gaussian',0,0.02);* V0 A% }% E4 J9 E
        J1=im2double(J);
    " j' O" `: t" k$ k3 R7 f    K=K+J1;
      D0 c+ c3 ]- D* {: `end
    0 P4 Q+ e- H8 }1 ~4 O%求图像的平均8 K* p! }1 X) O1 U! `
    K=K/100;   S/ v- [$ D, A8 I; U3 W
    %显示处理过的图像# S) O' d; w6 d
    subplot(1,3,3),imshow(K),title('result image');, a5 y. G7 f6 F1 v8 _* s( J

    9 G3 N! i5 Q% q再次感谢
    4 C$ W: m; G2 u8 `

    该用户从未签到

    4#
    发表于 2020-5-27 17:12 | 只看该作者
    来看看,学习学习
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-11-24 21:51 , Processed in 0.171875 second(s), 24 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表