找回密码
 注册
关于网站域名变更的通知
查看: 478|回复: 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 通过“.”来区分矩阵运算和元素运算。
    " B  o, ~/ N  m& c
    ! {  U, |/ d6 T8 R我看了一些论坛讨论的这个错误,一般都是“乘”和“点乘”弄错了,可是我下面的程序是涉及加法的,而且维数是直接把要相加的第一个矩阵的维数赋值给第二个矩阵,不知道为什么还会出错,请高手指点!
    ) e7 u1 M, x1 b$ |& l  x1 V' ~- h! D' X( G% G2 z" M
    shiyan.m的程序体为:* s! c+ I3 s2 F, ~
    ; ?: e% }4 g1 k
    [I,M]=imread('123.tif');0 X" s. s$ u+ d
    [m,n]=size(imread('123.tif'));; i- X3 T! o# h8 B; m) I
    J=imnoise(I,'gaussian',0,0.02);
    3 U! c1 y4 a0 @0 i3 Ysubplot(1,3,1),imshow(I,M),title('original image');: M- O: U, B% r: g: b
    subplot(1,3,2),imshow(J,M),title('managed image');
    + Y! z/ \' P7 \% XK=ones(m,n);, S3 d' s- i8 `# M- m8 ~
    for i=1:1:100
    0 O$ |1 o6 r! K    J=imnoise(I,'gaussian',0,0.02);# h" d8 s/ V: A. N$ o- c% L: Y( H
        J1=im2double(J);: V) o7 O+ R: z) g
        K=K+J1;      %第10行
    . @5 A! ~4 \- C/ q7 F% J. Pend
    - q# i# H  m$ J; f% Q" G  f6 o. HK=K/100;       %求图像的平均/ v# r, w3 a7 b" @" d9 z8 C- [
    subplot(1,3,3),imshow(K),title('result image');$ T4 \. y( A, L6 R- Y  w# ^  m; e
    5 f0 A1 D+ z% |$ m
    4 @' Z; T2 [5 n2 }6 I3 y
    运行的时候出现这个错误:
    , W/ s; d8 o1 \2 a& L5 G  p
    0 h( Z7 v# v1 ~  s7 n- c% K- x??? Error using ==> plus
    5 Y- C/ E7 |2 u1 K2 D* K: t  zMatrix dimensions must agree.
    1 G7 c; ?# w- S* X' V9 @% Y/ e0 w  v: xError in ==> shiyan at 10/ R& [. M2 W. y/ F' @) H
        K=K+J1;. h4 t% P6 g: |" u7 G) A
    8 i1 ~* n) I5 R0 _9 J9 k

    该用户从未签到

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

    0 K* r2 M1 S. m* Z5 I: F! nsize(K)
    : K( V! M  Y8 T7 Y
    & F4 r( a7 s/ nsize(J1)* i( f+ ]4 @3 X  n' P: W
    0 g% |9 E  }8 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
    % U* s/ K/ W0 gsize(K), y4 i* I  W, F# A

    5 S/ W* Q& \$ T- y" e' g" A+ Ysize(J1)

    - h3 ?5 c% [3 [. y; {2 s多谢,明白了。原来它们两个的维数真的是不同的。' g- B& f) @- j1 A

    # y# z' L7 y. r5 M8 z将程序改为如下形式就对了:
    1 Z2 \# L& N; E2 a%导入图像的同时将图像分为行和列元素* l: D/ B  w. X0 g4 l" N; I
    [I,M]=imread('123.tif');8 g% R! c+ E9 g! e* D
    %对图像进行加噪声
    2 T' E# L$ W9 N8 @5 Z$ R0 g% ]( L7 EJ=imnoise(I,'gaussian',0,0.02);0 t: O, J% {! T5 j; U
    %显示图像% f8 H4 S) x5 g# e% u
    subplot(1,3,1),imshow(I,M),title('original image');8 Y% C/ r9 W! r. o# [" B7 ?
    subplot(1,3,2),imshow(J,M),title('managed image');1 P. J! O8 @1 z4 D: c
    %创建与原图像一样维数的全0矩阵( W9 t4 P4 L* f% I+ s. t% T1 g: i- m
    J1=im2double(J);3 o% i4 K. y, X) G- m1 E
    K=ones(size(J1));
    8 g' N$ j5 P$ ?! s+ x%循环100对图像加噪声然后累加
    0 W6 B) H* S3 d) Vfor i=1:1:100. A3 W# s: k' @5 M5 o; ?4 ~
        J=imnoise(I,'gaussian',0,0.02);" U; @- o5 s) m; `
        J1=im2double(J);' h4 h" Z8 u# F. X* S2 J5 J
        K=K+J1;0 I" v5 T9 [, ?, k3 m5 _+ M
    end
    7 R  {) E/ p- q, c$ _8 c6 T%求图像的平均
    7 \: b2 [' i1 `K=K/100; 9 k- o5 [# D8 h* v/ G! O4 z) P
    %显示处理过的图像9 h- K8 {2 d, U/ r: f
    subplot(1,3,3),imshow(K),title('result image');9 u8 G, R) O- H# U  t8 C

    5 O4 Q& d' u9 v. D. x再次感谢
    5 f, w: a3 @  a

    该用户从未签到

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

    本版积分规则

    关闭

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

    EDA365公众号

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

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

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

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

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