找回密码
 注册
关于网站域名变更的通知
查看: 428|回复: 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 通过“.”来区分矩阵运算和元素运算。
    & v2 o6 g5 d# b9 D; s1 J; [, X* z9 A  P# M' V  D  m
    我看了一些论坛讨论的这个错误,一般都是“乘”和“点乘”弄错了,可是我下面的程序是涉及加法的,而且维数是直接把要相加的第一个矩阵的维数赋值给第二个矩阵,不知道为什么还会出错,请高手指点!
    3 R9 P( x5 P4 c4 b" q2 [! J0 T( V* I1 g/ S
    shiyan.m的程序体为:
    7 H: r2 k4 _+ X7 q
    7 }; `5 F" d  d! I[I,M]=imread('123.tif');  _! f6 h6 L( ^4 C" f
    [m,n]=size(imread('123.tif'));9 }( Z+ i; {' |8 K( `
    J=imnoise(I,'gaussian',0,0.02);
    % |) T0 t1 y1 A& r4 o" Ysubplot(1,3,1),imshow(I,M),title('original image');
    : n( T0 b' c; ^% _' R( S, I: Msubplot(1,3,2),imshow(J,M),title('managed image');. {- r2 B" _% X+ Z
    K=ones(m,n);* [! X8 b6 a, X3 `- s! M
    for i=1:1:100
      s% K' L" \( J4 A' ~    J=imnoise(I,'gaussian',0,0.02);
    2 |7 E7 q% _6 E    J1=im2double(J);
    4 N7 l# e) q) L, h( W  e8 l7 ?) m    K=K+J1;      %第10行9 q7 h& n7 C% C# y( f: Z
    end- C6 y1 I  r8 R% J! I$ ^: A7 ~/ W
    K=K/100;       %求图像的平均" t4 q9 w& v0 m. b! e( F% a) R
    subplot(1,3,3),imshow(K),title('result image');# d  g. p6 ?" u4 I. l1 E; u  H
    . F/ w+ E+ O0 K6 R6 x  }& v, V
    : W& ?$ l) R# V" t- ?! H
    运行的时候出现这个错误:
    & ~6 e0 B& x$ h3 R# _3 ]0 N
      m# g: c* J9 S4 A! h$ D2 n; e??? Error using ==> plus
    . _' ~1 j: z! d# X& XMatrix dimensions must agree.* Q9 X1 r( Y5 e8 o& A! d
    Error in ==> shiyan at 10# w+ L0 D0 r- K8 n! i* c
        K=K+J1;! J) v& V) F  b  {" j

    8 d/ E% p7 S9 W: b9 |# [- j: c8 H

    该用户从未签到

    2#
    发表于 2020-5-27 16:26 | 只看该作者
    ( A- w" F8 b5 F0 p- w; P% D2 u
    size(K)4 ^+ o3 s6 U1 }0 i; O3 K( U
    3 |- ~2 S6 f2 s7 v; V$ B
    size(J1)
    " a3 u1 w: N: R) `- V
    . R" e/ R( C. H* o8 H  B看看显示什么

    点评

    多谢,明白了。原来它们两个的维数真的是不同的。 将程序改为如下形式就对了: %导入图像的同时将图像分为行和列元素 =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
    : f$ V0 K9 x( _9 isize(K)
    ) b  G+ |) L1 Q5 ^$ j( F$ L6 |/ D3 v. o' ?7 F6 V7 t* N
    size(J1)

    ! F: g1 j0 z3 o9 @( r7 }- D多谢,明白了。原来它们两个的维数真的是不同的。3 W9 M$ f) s! H  G1 j
    8 h/ x$ _8 i3 Y/ ^$ r: y
    将程序改为如下形式就对了:
    ) N- Y# q3 @4 a9 R%导入图像的同时将图像分为行和列元素
    4 R9 B# I9 K! r  P6 a[I,M]=imread('123.tif');
    ( J9 F0 ^8 g+ d" t%对图像进行加噪声
    * i: n/ o  Y8 M' L+ v  v- E6 x9 {J=imnoise(I,'gaussian',0,0.02);. {( Y) k9 m3 C3 S: [
    %显示图像
    + C1 l$ o& }8 _3 _1 C; Psubplot(1,3,1),imshow(I,M),title('original image');& f* z$ e) C) W/ g( n  R6 ]
    subplot(1,3,2),imshow(J,M),title('managed image');. E7 ]7 \! z. k
    %创建与原图像一样维数的全0矩阵
    9 ]% F: E+ j! E2 N5 pJ1=im2double(J);
    $ X$ ]* F' V) k3 kK=ones(size(J1));
    1 F: }7 Z( h) c0 |3 D- l% N8 O" f- f%循环100对图像加噪声然后累加
    # b' `) p& D" Afor i=1:1:100
    % ~$ Q0 ?+ A3 y1 j    J=imnoise(I,'gaussian',0,0.02);
    # W$ U) d1 ^; A- U    J1=im2double(J);; x  h$ K4 a9 g# w/ |, e
        K=K+J1;# n7 j7 d" A9 U, V2 k' o+ @. [, T9 C
    end& ?; f5 {2 y) J
    %求图像的平均
    ! a2 ]. m( b1 a4 e) e. RK=K/100; 1 {* Y5 G9 t3 g  B0 C
    %显示处理过的图像
    / [& Y) t+ f3 Dsubplot(1,3,3),imshow(K),title('result image');
    7 ~1 I1 o$ m: U7 f$ _0 U# `- h: p2 I2 m# Q: l
    再次感谢
    . ]+ S3 `3 R' _) F) U

    该用户从未签到

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-6-25 00:55 , Processed in 0.062500 second(s), 24 queries , Gzip On.

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

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

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