找回密码
 注册
关于网站域名变更的通知
查看: 468|回复: 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 通过“.”来区分矩阵运算和元素运算。
    ! }9 V! k1 {' ~, m, R, Y
    2 ^0 K% L7 G9 p我看了一些论坛讨论的这个错误,一般都是“乘”和“点乘”弄错了,可是我下面的程序是涉及加法的,而且维数是直接把要相加的第一个矩阵的维数赋值给第二个矩阵,不知道为什么还会出错,请高手指点!$ q  l: w7 v$ ^$ }' b: a

    * J) j- Y' E) ^shiyan.m的程序体为:
    ; Q5 `/ t  L# o; l5 I* E7 T4 I" Q% }( G5 E0 Y
    [I,M]=imread('123.tif');
    4 B6 \6 P" j& Q2 X  X5 K; Z[m,n]=size(imread('123.tif'));
    4 m, n! i5 y% r2 \0 g) gJ=imnoise(I,'gaussian',0,0.02);
    ; x* W  C4 Z2 T9 [  k* p& Ysubplot(1,3,1),imshow(I,M),title('original image');
    * _! e. h" X4 \6 d% Asubplot(1,3,2),imshow(J,M),title('managed image');% {, ?. f, N* d7 ~0 U4 ]  S6 o/ ^
    K=ones(m,n);
    9 ^; `8 x2 C+ v4 D; U3 Mfor i=1:1:100  e3 K2 i$ ?4 C2 C, \  c/ W
        J=imnoise(I,'gaussian',0,0.02);
    9 A! ]' R) g1 ]    J1=im2double(J);
    3 p) w4 y( C8 c& L& |    K=K+J1;      %第10行
    , s: s5 `: l! x, s( qend
    $ j# n6 y! @+ [, v$ p) HK=K/100;       %求图像的平均
    ( G7 _! {4 k! z' U3 Csubplot(1,3,3),imshow(K),title('result image');+ ~$ j9 b, Y7 }

    / R8 _" M  T9 f3 j& v; b+ j0 ^8 _# o. ^+ H- j! ^
    运行的时候出现这个错误:
    6 Y1 \1 Y5 o5 ~) W: _2 G3 O
    0 p8 _3 b7 ^8 d. g/ m" ]: m: Y7 Y??? Error using ==> plus+ ~4 l: w" @' s' H) \- \
    Matrix dimensions must agree.
    $ _9 r: |1 l, O4 L( jError in ==> shiyan at 10
    4 K  i0 l: e/ I    K=K+J1;& @2 F( l# ^( S: a
    " p4 I6 B6 A/ x3 d- c( F+ G

    该用户从未签到

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

    % r  L6 Y; _4 J4 ?2 W/ msize(K)
    + P$ X1 B( X$ r; U" y. V9 q+ m$ P; D+ V& Q) G4 \; F# J6 @7 ]& w$ d! h
    size(J1)0 @" ?& M& s- Q

    - H3 v9 @3 p, ]4 w" [* M看看显示什么

    点评

    多谢,明白了。原来它们两个的维数真的是不同的。 将程序改为如下形式就对了: %导入图像的同时将图像分为行和列元素 =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
    + N. x% i8 B. _, `2 N4 vsize(K)
    ' U7 A+ L; s. }  {: h9 u% }9 [7 {% ]1 S$ H5 O* x7 |4 T7 A
    size(J1)

    4 r; P1 ]/ [( o$ U% Q1 Z, {0 @多谢,明白了。原来它们两个的维数真的是不同的。! q5 f" P7 W8 i1 ^

    ) G* p6 `# y% T! c: V  I" r, Z将程序改为如下形式就对了:% r" t$ \8 E  ^7 b1 {
    %导入图像的同时将图像分为行和列元素# e# F0 e$ e7 A8 e
    [I,M]=imread('123.tif');8 e  ?2 E  p) j, U" ~2 F2 l2 \
    %对图像进行加噪声" `; G* A9 J3 C( o0 E3 r( E5 W
    J=imnoise(I,'gaussian',0,0.02);
    . L3 O8 I) b" j% f' U9 t6 e%显示图像
    " ^- _$ g- Y. W: |: Jsubplot(1,3,1),imshow(I,M),title('original image');. d  ?1 ~8 a1 D& [3 a# p- j
    subplot(1,3,2),imshow(J,M),title('managed image');
    ( ^( r  W4 ~5 Q3 f$ D0 u%创建与原图像一样维数的全0矩阵; D0 `' t! `2 e5 e2 `; B
    J1=im2double(J);
    - M: `9 n, f( ?) n! DK=ones(size(J1));
    8 C/ ]# K5 R5 _) c%循环100对图像加噪声然后累加( E. [9 s* b$ o! D5 R
    for i=1:1:100
    ( Q( O4 ^; N; @1 B4 {    J=imnoise(I,'gaussian',0,0.02);$ h& g, c* ?+ K6 C3 w' z
        J1=im2double(J);
    ; }7 b" P0 A8 d/ L    K=K+J1;7 G& ?2 a! t. x; `3 x
    end  G$ O1 f- @7 ?% `, b& Q& R
    %求图像的平均" o9 y  b% g/ T
    K=K/100;
    - N+ U) @9 Y; o1 j4 c) Z%显示处理过的图像
    + T( J4 t% Q( y# `' x9 I) h- y2 x! }subplot(1,3,3),imshow(K),title('result image');
    : z' S  P4 [+ X$ ]$ u# R7 S, g2 k* g1 S/ ?
    再次感谢
    3 O) p; U4 n1 S3 V/ k

    该用户从未签到

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

    本版积分规则

    关闭

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

    EDA365公众号

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

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

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

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

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