找回密码
 注册
关于网站域名变更的通知
查看: 440|回复: 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 通过“.”来区分矩阵运算和元素运算。 - w( ~8 Y& X$ P3 ]0 D
    5 e1 B2 y! w) ]; H% Z5 z  R
    我看了一些论坛讨论的这个错误,一般都是“乘”和“点乘”弄错了,可是我下面的程序是涉及加法的,而且维数是直接把要相加的第一个矩阵的维数赋值给第二个矩阵,不知道为什么还会出错,请高手指点!2 V/ m7 b. _* u5 U7 b/ L) L5 b
    7 Q7 B0 Q6 G/ N
    shiyan.m的程序体为:
    : ?' M& i$ P0 q; U: z
    0 q4 [6 G1 ?( }- T6 {, X[I,M]=imread('123.tif');& B. H+ O$ ~! t2 B/ b' h4 }
    [m,n]=size(imread('123.tif'));
    2 T- u, m7 }; Y8 E7 E) J  rJ=imnoise(I,'gaussian',0,0.02);$ c( s$ D. r4 u( n7 ^( n0 J, I( A# P
    subplot(1,3,1),imshow(I,M),title('original image');
    6 ]3 I7 @1 W1 h, Q; O$ Isubplot(1,3,2),imshow(J,M),title('managed image');2 H+ S7 C! C. h& L1 ]; i
    K=ones(m,n);  T4 k2 i$ \$ F" M
    for i=1:1:100
    6 i/ r& H/ j7 }# b    J=imnoise(I,'gaussian',0,0.02);6 G& z7 d- C8 O. z, }  A
        J1=im2double(J);
    # ?( X( A6 g, D- J/ p- @# [    K=K+J1;      %第10行
    + Z) K) O5 B7 N! F) Xend
    5 @% _% }) h% _/ V1 ^K=K/100;       %求图像的平均# t7 s" L: t8 j' F: ?
    subplot(1,3,3),imshow(K),title('result image');: A4 g$ n/ K; S( c6 c+ T* d

    $ z  x! ]/ w% |, \' n: x8 R
    4 o- ]% [3 Q1 i/ E" c4 n) w3 M  N. B$ Y运行的时候出现这个错误:6 I. K; ^! o/ U

    ! l! @, {. D+ h5 G; X5 _+ B??? Error using ==> plus
      E% v: s, D; p5 B  m: z4 r/ |Matrix dimensions must agree.
    * S4 e- |/ }2 u9 K- n. OError in ==> shiyan at 10
    " n) |1 W/ U2 _* X5 {    K=K+J1;: {- F& s. w- I; ~  h

    8 N9 I5 ^/ \3 r0 W* E$ u

    该用户从未签到

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

    * I& ?% w% I0 r( R' M, v0 ]2 @size(K)
    4 u, B; p  p8 N4 w" q. y% P/ y: O; s3 b2 x4 ?5 a
    size(J1)
    - i2 n( r' w  `: x( R$ a8 S3 Y( S$ M' c% s1 h+ d& x' e4 G
    看看显示什么

    点评

    多谢,明白了。原来它们两个的维数真的是不同的。 将程序改为如下形式就对了: %导入图像的同时将图像分为行和列元素 =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
    , H9 H& L6 E+ m- K4 \+ D- ssize(K). }( m$ n3 X: j

      `0 U9 N& |! s- Y: ^size(J1)

    / ?7 I0 o) [9 L5 E8 X( V多谢,明白了。原来它们两个的维数真的是不同的。5 K- E7 A6 P3 O) H5 [

    / m3 ?7 x" J0 J将程序改为如下形式就对了:- N5 h) a- M4 A: ^) w
    %导入图像的同时将图像分为行和列元素
      D1 Z+ J  ~/ u+ W8 a+ J' {5 q[I,M]=imread('123.tif');' h: m6 }) ~9 \/ y  e" l9 T' j( }
    %对图像进行加噪声7 c# V8 P+ m% c4 B
    J=imnoise(I,'gaussian',0,0.02);
    : j9 }9 z& V* h3 T) }! B* r) p%显示图像5 y7 m9 J0 P+ _& @# m: k
    subplot(1,3,1),imshow(I,M),title('original image');5 E% y" J4 f, w* r- h# E5 J
    subplot(1,3,2),imshow(J,M),title('managed image');
    ! e5 V) ]* m2 l* h& O: l: C$ {5 A%创建与原图像一样维数的全0矩阵' m1 s6 M* j. F9 Y3 m0 P
    J1=im2double(J);; Y& x, V; r  Q% A  t+ x
    K=ones(size(J1));  `+ {2 Y- E/ j; Z
    %循环100对图像加噪声然后累加
    3 n, L9 ^5 C' b; v3 G8 S; A. Vfor i=1:1:100
    ' A* Y. k$ c$ H: a! t5 T! j$ C    J=imnoise(I,'gaussian',0,0.02);( F  [# F% E6 M, E
        J1=im2double(J);
    2 V6 t2 N% n3 K; C# a# b    K=K+J1;
    / ]5 ?$ c% ~  _0 fend6 X, x5 R2 o$ e! @0 A# z- ?
    %求图像的平均
    / h5 N) k; I% m1 o- J/ }  w( }' R8 hK=K/100;
    7 U. P. O2 I2 x$ x; m0 B8 G% @%显示处理过的图像
    ; P! Q1 o9 Z- N) e6 Csubplot(1,3,3),imshow(K),title('result image');
    ! K! @# q+ x8 V' \
    % x' G: T- |' D再次感谢4 \7 {$ S6 o# C- J

    该用户从未签到

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-8-24 03:09 , Processed in 0.109375 second(s), 27 queries , Gzip On.

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

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

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