找回密码
 注册
关于网站域名变更的通知
查看: 481|回复: 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 通过“.”来区分矩阵运算和元素运算。 4 c. ?4 h1 U3 o" Z7 O( o) E5 A

    $ r! I' W+ `0 V; e我看了一些论坛讨论的这个错误,一般都是“乘”和“点乘”弄错了,可是我下面的程序是涉及加法的,而且维数是直接把要相加的第一个矩阵的维数赋值给第二个矩阵,不知道为什么还会出错,请高手指点!
    9 E9 G1 @/ v- {! L. H( j; b1 r) y5 u' {- g% o- R8 A
    shiyan.m的程序体为:
    1 h7 l* c8 f% y* m( _' f
    % ~* c& u( M% y8 x5 h# K/ q[I,M]=imread('123.tif');% O* y4 {) D: Q
    [m,n]=size(imread('123.tif'));5 p# J" _4 i" x
    J=imnoise(I,'gaussian',0,0.02);1 [* ^7 o# Y/ V- y  ^
    subplot(1,3,1),imshow(I,M),title('original image');+ R; |, @- x8 a! R  e& F6 S
    subplot(1,3,2),imshow(J,M),title('managed image');0 c0 U3 `' x7 Y) U/ n# B- l2 T1 ^# L
    K=ones(m,n);. u0 o# x/ O7 Z: x1 _
    for i=1:1:100
    / w$ p: o* D' @8 s; _    J=imnoise(I,'gaussian',0,0.02);
    $ C' |. O! {7 k* o9 k    J1=im2double(J);& U; x9 c9 q2 z$ _! Q9 Z, [  i; \
        K=K+J1;      %第10行
    , d9 B; p# [) V$ x  A+ U, Nend1 h! h+ q% T  Y. s  A
    K=K/100;       %求图像的平均
    / h1 E; p) \2 d. {8 z' R4 ?subplot(1,3,3),imshow(K),title('result image');
    # Y3 m; c" P9 I; I9 }' b+ ^# P8 N5 `2 }3 j3 T

    5 ~, @/ q+ b' C, c0 b运行的时候出现这个错误:
    # W! O0 _2 O3 \7 W7 ?) l1 \5 T' T7 q& _5 A7 k
    ??? Error using ==> plus
    ! e0 E4 a. [% B2 |Matrix dimensions must agree.1 I( o- l! {. z8 s4 p4 V$ j
    Error in ==> shiyan at 106 X# ]4 y* v  Q5 h5 p" \8 d
        K=K+J1;
    ' K" U( @+ s$ n0 y$ Q, W. L% U6 O1 ]) F4 x  ]6 o. i; V: t: q0 L

    该用户从未签到

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

    . O0 _: i. J# J9 C. `- F. h4 a2 n2 nsize(K)5 l# l) L3 \- B( a6 C/ o- W

    # M4 S) x. a  V" a$ |8 \: jsize(J1)% i7 r; ]3 v9 a/ U: Z( ?& i
    $ L( j) j2 ~. l% ~9 L& T) J9 e
    看看显示什么

    点评

    多谢,明白了。原来它们两个的维数真的是不同的。 将程序改为如下形式就对了: %导入图像的同时将图像分为行和列元素 =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
    . h) y( C. a' s/ G6 b. W5 bsize(K)
    : ^  u! l1 n% J/ z8 p, |
    6 Y2 Q9 B' l+ z* dsize(J1)
    1 U+ V5 k; y; \$ o% f/ B
    多谢,明白了。原来它们两个的维数真的是不同的。* y) U6 O1 U, R* S4 H: J4 b
    7 M8 D$ ^, J8 G, P0 v
    将程序改为如下形式就对了:4 n0 w/ J4 F  u$ ?
    %导入图像的同时将图像分为行和列元素* L2 T3 N9 h" S7 t$ \$ E) s
    [I,M]=imread('123.tif');$ }/ T1 a, k0 u3 ~" F
    %对图像进行加噪声' H) o- Y5 S5 j8 n! g3 Z0 p# m
    J=imnoise(I,'gaussian',0,0.02);  f5 f% w! O. `/ x1 n1 h
    %显示图像# R/ t3 Z' F9 u; K3 x7 k; W
    subplot(1,3,1),imshow(I,M),title('original image');
    0 B, C6 W7 V3 K/ ysubplot(1,3,2),imshow(J,M),title('managed image');
    ' v+ {, m  m5 z1 _%创建与原图像一样维数的全0矩阵  h0 d8 h/ i# r# E5 A
    J1=im2double(J);5 c$ \2 j; Z9 p0 J% B
    K=ones(size(J1));! D$ f$ b0 N3 j& Z& q/ ?
    %循环100对图像加噪声然后累加
    9 v; T, ~1 [* I2 sfor i=1:1:100
    " T/ t; `7 n, w8 J7 ^* C    J=imnoise(I,'gaussian',0,0.02);
    4 @/ g& m& ^, K) j7 l, D- [    J1=im2double(J);  R4 x* _. T3 o( w+ S0 P
        K=K+J1;) U& |' ?( t7 s/ p
    end
    7 r$ ?% c8 G1 z3 A%求图像的平均
    9 R5 `2 H5 B5 A, Z8 b6 tK=K/100;
    ) b, K& A/ T& F+ E* i%显示处理过的图像) S: g7 b' O$ k' X0 T  ?
    subplot(1,3,3),imshow(K),title('result image');. K  R* B- h7 z- R4 Y

      H3 m4 m& f0 X* [" F再次感谢. t4 P, W9 |  Y5 A, N

    该用户从未签到

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

    本版积分规则

    关闭

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

    EDA365公众号

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

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

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

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

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