找回密码
 注册
关于网站域名变更的通知
查看: 479|回复: 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 通过“.”来区分矩阵运算和元素运算。
    / G; {# y$ Z7 a8 Q+ ]6 _& u" O3 }- U! B9 R4 k, k. a
    我看了一些论坛讨论的这个错误,一般都是“乘”和“点乘”弄错了,可是我下面的程序是涉及加法的,而且维数是直接把要相加的第一个矩阵的维数赋值给第二个矩阵,不知道为什么还会出错,请高手指点!& _3 n( K% p+ F. u4 T" n1 L( W
    + C/ \6 D1 B9 p* Y* t/ Y. r7 d' f: w
    shiyan.m的程序体为:
    : ~5 y- L# a* O  _* O
    / i" U: \: T, T9 S3 M* \[I,M]=imread('123.tif');
    ! y1 G! e6 x" p4 h[m,n]=size(imread('123.tif'));& y1 I) ^2 `7 v+ s2 ^
    J=imnoise(I,'gaussian',0,0.02);' D# r6 X# e  C2 [% @+ z$ p
    subplot(1,3,1),imshow(I,M),title('original image');5 q- k, i: C$ L) \/ ]3 s6 _3 \
    subplot(1,3,2),imshow(J,M),title('managed image');1 m: k" S- s! F! E
    K=ones(m,n);9 ~; I# M0 t+ Q5 x8 B
    for i=1:1:100
    - F; Y+ ^& i/ v, P; x    J=imnoise(I,'gaussian',0,0.02);1 K8 x, i0 p* m, F; C; T
        J1=im2double(J);# J6 r. [; Y+ E& a
        K=K+J1;      %第10行
    ' }2 m5 b, {9 M) G0 pend
    , m" C, W% ~5 U/ F( vK=K/100;       %求图像的平均) `/ ?, E2 `7 g3 c( }4 t: }" ?
    subplot(1,3,3),imshow(K),title('result image');5 X4 I# ?8 v- ~. s2 l

    + D; L! H5 [+ @5 W8 Y$ T( S' k$ Y
    : d) k$ e$ L% A6 s' X* F! D" @) `运行的时候出现这个错误:, `2 {+ ?. p' d; P9 N! H

    / I9 a& r- ]7 z# e??? Error using ==> plus% a3 S8 x$ N* n2 Z9 ^$ k
    Matrix dimensions must agree.
    # a; r) N  s& i7 @& e. o, s/ F; |9 _Error in ==> shiyan at 10/ d% F9 Z5 |4 n' Y6 T/ y& C
        K=K+J1;$ B) K4 ]5 R* a; Q/ z

    . ~; o: [# M- u8 q! H

    该用户从未签到

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

    * d% P  a$ S% S& Xsize(K)4 D$ t& ]& {1 V+ R4 s* M
    . v  E, c9 l: A5 I9 ]
    size(J1)/ ^5 ^" Q5 ~/ _' L
      ^" Y; H" K! n% ~1 O) y
    看看显示什么

    点评

    多谢,明白了。原来它们两个的维数真的是不同的。 将程序改为如下形式就对了: %导入图像的同时将图像分为行和列元素 =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
    7 \0 Z. g7 q! V; K3 u/ ~& Xsize(K)0 |- }5 t" R' v( Z, e

    3 [' U* \$ O4 x6 \( \+ D! q0 [size(J1)
    / s' l7 P& z0 q2 Q3 _6 X; q3 P
    多谢,明白了。原来它们两个的维数真的是不同的。* }" W! P- L* f* k0 W
    3 @  S3 V. E$ p1 C: `/ J: m8 J
    将程序改为如下形式就对了:
    9 B$ I2 G1 P% M4 w3 s# Z%导入图像的同时将图像分为行和列元素" a/ u" ?- Z* p
    [I,M]=imread('123.tif');
    5 I, H( x: s+ D- ?" k6 U. S% A2 P  P%对图像进行加噪声
    8 r: ~# W! Q) @6 r4 D: d2 E: AJ=imnoise(I,'gaussian',0,0.02);
    6 {. ?. H$ Q2 c6 N  R%显示图像. J! j" Z1 l9 m+ s' d
    subplot(1,3,1),imshow(I,M),title('original image');
    ) V$ B1 f2 r3 W# f! Jsubplot(1,3,2),imshow(J,M),title('managed image');" A5 A/ q7 ~+ X7 Y( n4 V& h. l" H
    %创建与原图像一样维数的全0矩阵3 o0 S9 t9 o* ?1 Q
    J1=im2double(J);
    8 l7 {, t' c% h) d$ p3 y0 L$ j" oK=ones(size(J1));
    5 V* L* t  `6 a2 o2 V%循环100对图像加噪声然后累加: P* i9 g7 c% k* }" P" P
    for i=1:1:1002 |9 [9 S; s6 t6 x: d# U# R
        J=imnoise(I,'gaussian',0,0.02);
    5 ~! J1 \* w) e9 ^    J1=im2double(J);
    % G8 e- o/ e. @/ U: I0 e. g    K=K+J1;; J6 e; D+ c% G/ u. @0 z8 z
    end
    ! K3 X% l0 p! d%求图像的平均  _5 b9 j; `# f/ J( b0 [" }
    K=K/100;
    - y1 w* z6 L0 n%显示处理过的图像
    # E$ X& z" [5 v  Tsubplot(1,3,3),imshow(K),title('result image');
    + F1 H+ o3 Z4 r  L+ i) K/ D
    ) i; `4 i* n6 U+ C- H再次感谢
    ( t( q" w& C' q0 z/ ~

    该用户从未签到

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

    本版积分规则

    关闭

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

    EDA365公众号

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

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

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

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

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