找回密码
 注册
关于网站域名变更的通知
查看: 435|回复: 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 通过“.”来区分矩阵运算和元素运算。
    ! y0 |( m4 s# v' p# ~3 R% m  b; e2 I
    我看了一些论坛讨论的这个错误,一般都是“乘”和“点乘”弄错了,可是我下面的程序是涉及加法的,而且维数是直接把要相加的第一个矩阵的维数赋值给第二个矩阵,不知道为什么还会出错,请高手指点!3 C1 v- b1 X. i1 N
    : f2 y6 B. h* X6 n+ C
    shiyan.m的程序体为:
    7 x; R. `) y8 S- @% f2 N
    1 n. M' u" \9 P8 Z[I,M]=imread('123.tif');
    ! d8 |8 F* y; ^[m,n]=size(imread('123.tif'));3 t* u+ O6 u9 U8 i
    J=imnoise(I,'gaussian',0,0.02);
    4 d! v- U; u0 X& @* [1 A( `, c9 H4 asubplot(1,3,1),imshow(I,M),title('original image');
    ) u( N  O! J% x5 V3 Dsubplot(1,3,2),imshow(J,M),title('managed image');
    $ N# S3 T2 C) T1 X5 w1 F, D" fK=ones(m,n);! i( I. w! ^- U( m0 ~, o, s
    for i=1:1:100
    & @; G% N# g6 L9 |    J=imnoise(I,'gaussian',0,0.02);/ e; V. m4 H. S4 q; f8 r, P+ m
        J1=im2double(J);
    4 x0 u6 L; C3 p/ Z    K=K+J1;      %第10行
    ) e. F# w& _3 ?5 `2 Z, r6 T. S' Fend
    5 w  S( x+ C* G6 y, ~$ B9 cK=K/100;       %求图像的平均8 A% {( X6 m4 o6 _
    subplot(1,3,3),imshow(K),title('result image');  M; Y4 C  R% ~  M/ Z9 Q( e) A

    ( h9 Z+ I8 [+ O0 {" S6 y# j+ B4 ~0 F# H
    运行的时候出现这个错误:
    + l3 E/ b- c6 Z. T2 w* }: c# N" Y, `8 _/ M6 b" A, R# L. x* E/ k- s
    ??? Error using ==> plus7 g( D3 z$ }5 z$ x: c$ J, L
    Matrix dimensions must agree.( R+ `8 Y0 ?* r$ Z& H/ ]% p, h
    Error in ==> shiyan at 104 O4 D  A4 J$ f! A' r; @' i0 H
        K=K+J1;2 ]# t3 Z; d( K3 n6 n" r
    : u9 e2 |5 N8 y# ?, n6 ^

    该用户从未签到

    2#
    发表于 2020-5-27 16:26 | 只看该作者
    # d6 v/ o- _$ H
    size(K)
    ) l0 L+ r2 o7 m7 T. b7 X$ v3 j2 U6 o: a# x
    size(J1)" j! v* F+ P: p# t6 i# x

    7 U8 P5 A* S) t: X: [9 T& S看看显示什么

    点评

    多谢,明白了。原来它们两个的维数真的是不同的。 将程序改为如下形式就对了: %导入图像的同时将图像分为行和列元素 =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
    9 ?+ {9 e: d, M5 U" r6 T1 q1 d7 psize(K)
    5 r* |6 ]" Q. r) [/ l8 J
    $ ^5 N7 f0 H; ?size(J1)

    * f& P6 ~- J! @多谢,明白了。原来它们两个的维数真的是不同的。
    & H0 A3 W2 v  d1 e3 d
      M2 ?! J& m6 F3 D: f; F: ]7 N将程序改为如下形式就对了:; Q' a1 Z( Y$ Z9 t
    %导入图像的同时将图像分为行和列元素% W. {; c6 X+ }; v" ?& w1 x% Q8 c
    [I,M]=imread('123.tif');
    2 W4 S% g8 Z- F1 \* l3 @/ s+ L  W%对图像进行加噪声9 K" \% Q1 E4 M" s
    J=imnoise(I,'gaussian',0,0.02);
    " a. ]7 c( ?! G; F( v' a" `%显示图像
    + B4 U! q0 H3 ~  k, D# c: vsubplot(1,3,1),imshow(I,M),title('original image');
    " y! i% D  g# ^6 |6 ]. T/ |2 ^subplot(1,3,2),imshow(J,M),title('managed image');
    / g) f6 N: i- E7 u' R%创建与原图像一样维数的全0矩阵
    . I! }/ c4 f: y0 rJ1=im2double(J);
    # _7 m1 u( {4 bK=ones(size(J1));% y+ |2 Z! o4 T/ X
    %循环100对图像加噪声然后累加
    ; c- h& S; }% A/ Q1 ffor i=1:1:100
    " ]7 T2 l( C. N/ r( w( p    J=imnoise(I,'gaussian',0,0.02);
    , K- a. W; f( Z2 H  i2 ^% K    J1=im2double(J);
    + o% d) Q6 a( P; O: q& N    K=K+J1;
    ) y+ B0 z* L* v# {! d7 I/ Pend- V6 Q7 {8 _& Q7 F
    %求图像的平均
    " c" Z" z: q5 F% T& [& b% yK=K/100; " y, p# V( ?  w# ~4 U2 x
    %显示处理过的图像1 U- Q1 f1 _7 c% p3 I7 s
    subplot(1,3,3),imshow(K),title('result image');
    . \0 r; U3 L( e+ x7 H2 z- c
    % s' I6 I- t( k0 k/ w& {6 ~再次感谢
    + r. _" h- r. Z) v. @

    该用户从未签到

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-7-23 21:55 , Processed in 0.109375 second(s), 24 queries , Gzip On.

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

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

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