找回密码
 注册
关于网站域名变更的通知
查看: 469|回复: 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 通过“.”来区分矩阵运算和元素运算。 1 g: w  F& a1 _4 @9 u6 W5 X
    8 V( ]: L8 G4 C2 S* E! p& J
    我看了一些论坛讨论的这个错误,一般都是“乘”和“点乘”弄错了,可是我下面的程序是涉及加法的,而且维数是直接把要相加的第一个矩阵的维数赋值给第二个矩阵,不知道为什么还会出错,请高手指点!
    ! j/ G  n. o3 Z7 I  p
    - D$ f, Q  i/ L! d! t0 Gshiyan.m的程序体为:
    1 E, x1 j" ^" Y: Q
    " w. b' L0 D9 e& Q[I,M]=imread('123.tif');2 m2 ]: s( A- r& }6 V( H; p
    [m,n]=size(imread('123.tif'));
    ' h, e. Q7 x, n" g% JJ=imnoise(I,'gaussian',0,0.02);6 B, k- Z& S; O. l, A& R
    subplot(1,3,1),imshow(I,M),title('original image');
    " e. R: v0 Y- z9 q# j' Wsubplot(1,3,2),imshow(J,M),title('managed image');& Q3 Z9 `$ U5 b0 f7 b+ T
    K=ones(m,n);
    " F6 d$ K8 ^) V* _; `, afor i=1:1:100$ ^6 F9 r' t+ l  b
        J=imnoise(I,'gaussian',0,0.02);) T( \1 a; \5 T# ^. p  z$ |5 }
        J1=im2double(J);
    & A  D5 ]& N* \+ n, p    K=K+J1;      %第10行0 f1 S9 G) w6 F; Q( J$ \
    end
    ! w5 z8 N- ~  r+ A8 bK=K/100;       %求图像的平均* L- V3 d2 W: v* Z
    subplot(1,3,3),imshow(K),title('result image');
    " T0 k- V3 y( Y. ^& _$ ~/ c: R. h( F! o+ I# C9 y3 z
    ; r4 s% ~. h& q
    运行的时候出现这个错误:
    0 z' C6 T- k& _+ V4 ?: U2 g$ N4 P% K( e  Z( M! n4 N9 e
    ??? Error using ==> plus' D5 X' t# T5 T! F6 N5 b8 u0 ~5 d6 O0 n
    Matrix dimensions must agree.$ R5 U, e& w$ b  V+ L, o/ j# t
    Error in ==> shiyan at 10
    4 d* T* I- m5 c5 t! N6 Y) U" f    K=K+J1;
    + m, z0 r3 I2 D! e/ @6 P' f" o9 U) O& Q0 D- D( f$ A6 B0 D; o

    该用户从未签到

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

    5 O+ j0 u" B" O1 zsize(K)
    1 m9 n0 ~- L  U! c# Z  p" j% W; n+ W1 [) ^! B* T0 o; k
    size(J1)% S0 F, e2 h( H6 R" ]0 f& J+ ~

    " e- {+ W. @. J6 z, B! h, i看看显示什么

    点评

    多谢,明白了。原来它们两个的维数真的是不同的。 将程序改为如下形式就对了: %导入图像的同时将图像分为行和列元素 =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:26
    4 Z" Z7 w4 J& t6 @size(K)
    : d" h: X* |: R8 r  Q- j2 H+ l
    5 j# z) Z/ }5 \; P  |size(J1)
    2 f! F( o+ I# J" t! [! z5 ~
    多谢,明白了。原来它们两个的维数真的是不同的。
    & D" t' V! m  L2 R& Y- a5 i0 D: R4 d( ?+ ~+ R
    将程序改为如下形式就对了:) V, @7 ]& ~' D) Y. x0 }
    %导入图像的同时将图像分为行和列元素
    4 I( _) e3 h8 C* a/ P[I,M]=imread('123.tif');1 \5 e7 x; A: F
    %对图像进行加噪声( r5 ?- X  ]2 O" f8 t- A- m) C4 d
    J=imnoise(I,'gaussian',0,0.02);9 U& `0 F+ h8 X2 {6 \/ R
    %显示图像
    6 f% m# D- x! j* o3 [) G; Nsubplot(1,3,1),imshow(I,M),title('original image');
    / ~( I, Z6 `$ o& Isubplot(1,3,2),imshow(J,M),title('managed image');
      g2 c# _! c  E, B! Q%创建与原图像一样维数的全0矩阵( L% A# j& D* g. V2 h! S, B  @  H& M
    J1=im2double(J);; P4 j6 s1 i6 T2 r$ L
    K=ones(size(J1));. z2 u; t4 r2 C
    %循环100对图像加噪声然后累加
    : f8 p) `+ M1 T3 D- _for i=1:1:100
    / R# F( n! Z7 R2 e    J=imnoise(I,'gaussian',0,0.02);* N) W/ u. N9 ^6 ?8 o5 W0 D
        J1=im2double(J);
    ; t* n. f; c: C; {+ `/ {    K=K+J1;
    * V+ a8 ^+ X) j6 {8 g# Yend# b7 }% j( E) g: j' X! [) [8 P
    %求图像的平均: H+ K* j9 T  a( w$ H
    K=K/100;
    % W) ~5 p: ?7 L& d0 e. I& f%显示处理过的图像) F" Z3 N3 F- Z" _7 E5 k
    subplot(1,3,3),imshow(K),title('result image');
    ' x1 k0 @' ~: q9 j5 d- P* B
    ) o  d4 }" F  R* _/ Z1 T& Q再次感谢
    - u; o1 h5 F) [8 P

    该用户从未签到

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-11-6 05:14 , Processed in 0.140625 second(s), 24 queries , Gzip On.

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

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

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