精华内容
下载资源
问答
  • matlabfor循环给矩阵赋值
    千次阅读
    2021-08-08 00:12:54

    for i=1:250

    for j=1:250

    a(i,j)=i*j;

    end

    end

    这几行代码,跑起来需要将近30分钟

    开始时候速度很快,但随着数组a的长度增加,速度越来越慢

    有人说需要提前预置空间,如下

    a=zeros(250)

    for i=1:250

    for j=1:250

    a(i,j)=i*j;

    end

    end

    但速度并没有大大提高

    这时,我们可以采用一元数组求解,最后将所有解合起来,如下

    a=zeros(250)

    for i=1:250

    for j=1:250

    w(j)=i*j;

    end

    a(i,:)=w

    end

    这种方法可以大幅度减少时间消耗,大约3分钟左右即可跑完。

    更多相关内容
  • 现象:嵌套两层for循环,对图像的行列依次点对点赋值给另一个矩阵,只有w个数据成功赋值,其余全为0。 这里并不是无聊而是确实有场景需要用到点对点的赋值+运算。 现象1(单个例子) 我是严重怀疑我用了一个假的...

    版本:matlab 2019a
    现象:嵌套两层for循环,对图像的行列依次点对点赋值给另一个矩阵,只有w个数据成功赋值,其余全为0。

    这里并不是无聊而是确实有场景需要用到点对点的赋值+运算。

    现象1(单个例子)

    我是严重怀疑我用了一个假的matlab.出现了很多根本不该打印的东西。(打印的时候不要用G(i:j)而是temp)

    在这里插入图片描述
    用for循环跑出来的结果:(赋值失败,很多0)
    在这里插入图片描述
    在for循环外面跑的代码和结果:(赋值正确)
    在这里插入图片描述
    在这里插入图片描述
    for循环把该有的都跑飞了。

    现象2(整体)

    矩阵赋值之后只有左边两列有数据,其他全0。
    在这里插入图片描述

    代码

    如下:

    clc;
    clear all ;
    RGB = imread('1.jpg') ;
    sz = size(RGB);
    h = sz(1);
    w = sz(2);
    R =RGB ( : ,: ,1) ;% h,w故i=h,j=w(先行再列)
    G =RGB ( : ,: ,2) ;
    B =RGB ( : ,: ,3) ;
    
    ro = uint8(zeros(h,w));
    go = uint8(zeros(h,w));
    bo = uint8(zeros(h,w));
    image =  uint8(zeros(h, w, 3));
    %将RGB转到两个8bit的outdata变量里去。
    for i = 1:h 
        for j = 1: w
            ro(i:j) = R(i,j);
            go(i:j) = G(i,j);
            bo(i:j) = B(i,j);
    %         ro(i:j) = bitand(R(i,j),255);
    %         temp=bitand(R(i,j),255);
    %         temp2=ro(i:j);
    %         fprintf('i:%d j: %d\n',i,j); 
    %         fprintf('bitand= %d,ro = %d \n',temp,temp2); 
        end
    end
    rgb = cat(3,ro,go,bo);
    imshow(rgb);
    

    imshow(RGB)可以得到正常的图像,imshow(rgb)就只能得到左侧(最左两列有一点信号)的黑色图像。

    进一步探究(简化代码,4*4矩阵作为图像)

    代码如下:

    clear all ;
    RGB = uint8(ones(4, 4, 3));
    sz = size(RGB);
    h = sz(1);
    w = sz(2);
    R =RGB ( : ,: ,1) ;% h,w故i=h,j=w(先行再列)
    G =RGB ( : ,: ,2) ;
    B =RGB ( : ,: ,3) ;
    ro = uint8(zeros(h,w));
    go = uint8(zeros(h,w));
    bo = uint8(zeros(h,w));
    
    for i = 1:h 
        for j = 1: w
            [i,j];
            temp=R(i,j);
            ro(i:j) =temp;
    %         ro(i:j) = R(i,j);
            go(i:j) = G(i,j);
            bo(i:j) = B(i,j);
        end
    end
    

    这里我只创建了一个4x4的三维矩阵(我怀疑是元素太多,在计算过程中调用内存不够导致的失败,然而并不是),矩阵的值全为1。但是无论如何修改,单点赋值给单点就是不行(只有w个数被成功赋值)。结果如下
    在这里插入图片描述
    创建了一个4x3的三维矩阵,结果如下:
    在这里插入图片描述

    所以到目前感觉和w(内循环的次数)有关。

    使用rgb=RGB,ro将得到正常的值(全1)。

    希望各位大佬能给予解释!谢谢

    展开全文
  • matlab矩阵赋值语句

    千次阅读 2021-04-21 21:11:30
    结构数据和单元数据 2.8 稀疏矩阵 2.1 变量和数据操作 2.1.1 变量与赋值 1.变量命名 在MATLAB 6.5中,变量名是以字母开头, 后接字母、数字或下划线的字符......使用冒号操作符【例2-6】键入并执行x= (1:3)’ % “’ ...

    结构数据和单元数据 2.8 稀疏矩阵 2.1 变量和数据操作 2.1.1 变量与赋值 1.变量命名 在MATLAB 6.5中,变量名是以字母开头, 后接字母、数字或下划线的字符......

    使用冒号操作符【例2-6】键入并执行x= (1:3)’ % “’ ”表示矩阵的转 置 2019/9/20 Matlab Language 5 2.2.2、创建一维数组变量 (续) ? 创建数组......

    矩阵元素的单独赋值例:>> x(5)=abs(x(1)) Matlab自动将向量 x 的长度扩展到 5, 并将未赋值部分置零。 矩阵元素赋值 ? 大矩阵可以把小矩阵作为其元素例:......

    2.2.2 赋值语句赋值就是把数赋予代表常量或变量的标识符。 MATLAB中的变量或常量都代表矩阵。 MATLAB赋值语句有两种格式: (1) 变量=表达式(或数) (2) 表达式......

    [变量名列表]=函数名(输入参数列表) 示例: [V1,V2,V3]=myfun(M1,M2) 表达式语句注: 一个语句可以只有表达式 系统自动将表达式的结果赋值给MATLAB内部变量"ans......

    在MATLAB中,变量都代表矩阵。 列矢量可被当作只有一列的矩阵;行矢量也可被当作只有一个行的矩阵;标量应看作 1?1阶的矩阵。赋值语句的一般形式为: 变量=表达式......

    matlab语句_计算机软件及应用_IT/计算机_专业资料。Matlab 命令汇总 Matlab 命令汇总都是从网上转的,贴到一起方便查,使用的时候直接 Ctrl+F 搜索。一、常用对象......

    将Matlab 中的矩阵写入 txt 文件的方法 文件操作是一种重要的输入输出方式, 即从数据文件读取数据或将结果写入数据 文件。MATLAB 提供了一系列低层输入输出函数,......

    置 2014-3-22 % “ ? ”表示矩阵的转 Matlab Language 5 2.2.2、创建一维数组变量 (续) ? 创建数组变量的一般方法 ? 创建变量的赋值语句的一般格式 var=......

    MATLAB矩阵及其操作 ? MATLAB运算与矩阵分析 ? 字符串、结构数据和单元数据 ? MATLAB稀疏矩阵及其操作 ? 2.1 变量和数据操作 2.1.1 变量与赋值 1.变量命名 ......

    MATLAB 区分大小写, 默认状态下, A 和 a 被认为是两个不同的字符。 (case sensitive ) 一、数组和矩阵 ( 一)数组的赋值数组是指一组实数或复数排成的长方......

    [n,m]=size(fb2) 语句 size 检查矩阵阶数,两矩阵相加,阶数必须相同。 x=[-1 0 1]; y=x-1 两相加减的矩阵中有一个是标量时, MATLAB 将标量扩展成......

    把第 4 行元素赋值为 3 、(4+5)/6*2、-7 6. 把 A 的第 1、4 行和 2、3 列相交的元素构成矩阵赋给 A1 7. 把 A 的第 1-4 行和 2-3 列......

    2.1 变量和数据操作矩阵是MATLAB最基本的数据对象和单位,运算定 义在复数域。 2.1.1 变量与赋值 1.变量命名 变量名以字母开头,后接字母、数字或下划线的字符......

    的随机矩阵 (3)利用 MATLAB 提供的“Matrix Editor”完成输入 步骤 1 在命令区输入 A=1 步骤 2 用鼠标单机工具栏的工作区浏览器,MATLAB 弹出变量浏览器,选中......

    Matlab变量及命名规则_信息与通信_工程科技_专业资料。Matlab 变量及命名规则 Matlab 中所有的变量都是用矩阵形式来表示的,即所有的变量都表示一个矩 阵或者一个......

    matlab 基本语句 1。循环语句 for???for i=s1:s3:s2 循环语句组???end???解释:首先给 i 赋值 s1;然后,判断 i 就是否介于 s1 与 s2 之间; 如果就是,......

    第2章 MATLAB数据 2.1 2.2 2.3 2.4 2.5 2.6 MATLAB数据的特点 变量和赋值 MATLAB矩阵 MATLAB运算 字符串 结构和单元 2.1 MATLAB数据的特点 1) 矩阵是 ......

    (2)在数字运算中,输入变量必须预 先赋值;(3)如果只有一个返回变量,可省略 矩阵标识符; 2.1.3 变量精度在matlab中,变量的精度问题不需要设 定,一律使用双......

    第2章 MATLAB的基本语句结构 2.1 直接赋值语句 2.2 MATLAB矩阵 2.2.1 矩阵的建立 2.2.2 冒号表达式与子矩阵提取 2.2.3 特殊矩阵 2.3 基本数学运算 2......

    展开全文
  • matlab中怎么给矩阵赋值

    千次阅读 2021-04-18 05:33:52
    for i=1:length(x)%y=[y;x(i)];%把每一个x都放到Y里,成为一列y=[y,x(i)];%把每一个x都放到Y里,成为一行end>> a=rand(10,10);>> a(3:9,2:8)=10a =0.1622 0.4505 0.1067 0.4314 0.8530 0.4173 0...

    x=1:0.1:10;

    y=[];

    for i=1:length(x)%

    y=[y;x(i)];%把每一个x都放到Y里,成为一列

    y=[y,x(i)];%把每一个x都放到Y里,成为一行

    end

    >> a=rand(10,10);

    >> a(3:9,2:8)=10

    a =

    0.1622    0.4505    0.1067    0.4314    0.8530    0.4173    0.7803    0.2348    0.5470    0.9294

    0.7943    0.0838    0.9619    0.9106    0.6221    0.0497    0.3897    0.3532    0.2963    0.7757

    0.3112   10.0000   10.0000   10.0000   10.0000   10.0000   10.0000   10.0000    0.7447    0.4868

    0.5285   10.0000   10.0000   10.0000   10.0000   10.0000   10.0000   10.0000    0.1890    0.4359

    0.1656   10.0000   10.0000   10.0000   10.0000   10.0000   10.0000   10.0000    0.6868    0.4468

    0.6020   10.0000   10.0000   10.0000   10.0000   10.0000   10.0000   10.0000    0.1835    0.3063

    0.2630   10.0000   10.0000   10.0000   10.0000   10.0000   10.0000   10.0000    0.3685    0.5085

    0.6541   10.0000   10.0000   10.0000   10.0000   10.0000   10.0000   10.0000    0.6256    0.5108

    0.6892   10.0000   10.0000   10.0000   10.0000   10.0000   10.0000   10.0000    0.7802    0.8176

    0.7482    0.4427    0.8001    0.1450    0.2400    0.1112    0.0598    0.4509    0.0811    0.7948

    >>

    展开全文
  • 之前在做仿真的时候,经常会有需要把一个矩阵或者元胞的不同位置的值,赋值给不同的变量,然后在后续的程序中分别调用,可能有人会觉得为什么不用(x,y)直接调用呢,简单的情况确实可以如此(比如二维矩阵),但是更...
  • matlab循环生成矩阵

    千次阅读 2021-04-21 06:26:41
    MATLAB矩阵求值的循环语句?...endtmatlab 中的核矩阵for循环问题A(i,:)-A(j,:)表示A矩阵的第i行减去第j行,得到的是一个行向量;norm函数是取2范数,也就是向量的各项平方求和再开方.(因此我觉...
  • python给矩阵赋值

    千次阅读 2020-11-21 02:10:44
    广告关闭腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!... #创建一个3*3的零矩阵矩阵这里zeros函数的参数是一个tuple类型(3,3)data2=mat(ones((2,4))...
  • 两个系数矩阵要进行融合,采用绝对值取大的准则,一般采用for循环即可 Coefs=Coefs1; [x,y,z]=find(Coefs2); for m=1:length(x) if(abs(Coefs2(x(m),y(m)))>abs(Coefs1(x(m),y(m)))) Coefs(x(m),y(m))=...
  • matlabfor循环

    千次阅读 2021-04-29 03:58:42
    matlab 动态 for,帮你快速入门MATLAB(基本知识篇),matlabfor循环,matlabfor语句Matlab for 循环_数学_自然科学_专业资料。for 循环语句 for ...nEnd %其中默认的不错为 1 具体的编程内容 end 看看 matlab 的帮助吧 :...
  • 矩阵运算代替FOR循环

    千次阅读 2021-05-02 08:32:08
    在数据量很大的情况下,用矩阵运算可代替FOR循环,使运算速度大大加快。我想问的是,如果一个FOR循环中,有很多if、continue等条件语句或循环语句,还能变成矩阵运算吗?我有个程序需要循环几百万次,速度非常慢,请...
  • 求助:这个MATLABFOR循环语句错在哪里?【补充】程序的第一行加上clear,你说的问题就可以避免了。程序没有问题。等于:den = 1 3 0Transfer function: 1---------s^2 + 3 sTransfer function: 1-------------s^2 + 3 ...
  • Matlab矩阵间快速赋值方法

    千次阅读 多人点赞 2018-06-06 09:41:00
    目前还没见到网上用过这个简单的方式 A= [1 2 3; 4 5 6;...B(1:2, 2:3) = A(2:3, 1:2) %将A的部分内容赋值给B的指定位置 个人觉得这比单个元素的赋值方便多了,减少for循环的使用 转载于:ht...
  • 想请教一下,向这种带下标m的矩阵matlab中能表示吗? 并且用for循环赋值,就是要对m个矩阵K进行赋值
  • matlab能用矩阵操作就不要用for循环

    千次阅读 2018-09-27 16:31:13
    1.MATLAB尽量少用for循环来操作矩阵,多用本身的矩阵操作函数 比如,想将矩阵的第三列通过第二列计算得到,以下两种方式得到的结果一致,但不用for更简洁。 a = 6; feature_labelnum(:,3) = a * sqrt(feature_...
  • x=1:0.1:10; y=[]; for i=1:length(x) % y=[y;x(i)];%把每一个x都放到Y里,成为一列 y=[y,x(i)];%把每一个x都放到Y里,成为一行 end
  • MATLAB for循环优化三例

    2021-04-21 02:11:50
    最近一周,对MATLAB有进行了新一轮的学习,对其矩阵化编程的思维有了更深入的了解。确实精妙!例1:将矩阵A= [1 2 3; 2 4 3; 3 4 5]中所有的数字3替换为33.如果还停留在C语言的思维可能就是123456789101112>>...
  • Matlab中每个for循环迭代的速度降低

    千次阅读 2021-04-18 07:39:53
    我在Matlab中编写了一个while循环,应该使用Matlab中的tic toc延迟在指定的时间间隔内将数组中的每个值从Matlab发送到arduino,然后读取值并将它们存储在变量中并对其进行图形化。while循环的输出随着每次连续的迭代...
  • 我认为这将是稀疏矩阵的增量更新,而不是基于循环的条件,这将减慢速度.通过类似A(i,j)= 1的方法向稀疏矩阵添加新条目时,通常需要重新打包整个矩阵数据结构.这是一项昂贵的操作.如果您感兴趣,MATLAB将在内部使用CCS...
  • matlab for 循环出了点问题,不知道怎么回事matlab for循环运行出现问题,一次运行的和却不等于分开运行的和,...,matlab for 循环出了点问题,不知道怎么回事匿名网友:看看这个测试小程序,看能不能你启发。...
  • matlab中循环语句与for循环

    千次阅读 2021-04-18 14:24:17
    matlab中循环语句与for循环篇一:matlab循环语句循环结构1.for语句for语句的格式为:for 循环变量=表达式1:表达式2:表达式3循环体语句end其中表达式1的值为循环变量的初值,表达式2的值为步长,表达式3的值为循环...
  • Matlab简单教程:循环

    千次阅读 2021-04-18 08:21:45
    循环输出变量for i=1:4 iend123其中1:4代表一个行向量1 2 3 4,在matlab中,行向量的另外一个表示方法是[1 2 3 4],即for i=1:4等价于for i=[1 2 3 4],编写程序时牢记一个点:对于某次固定的迭代,i会从这个向量中...
  • MATLAB如何尽量避免for循环

    千次阅读 2021-01-20 01:31:28
    我们知道MATLAB擅长矩阵计算,但对于跑for循环非常低效,因此在内存足够的情况下应尽量写成矩阵或者向量化操作的形式,善用更好的数据结构、算法,以及matlab自带的函数特性,以尽可能避免for循环降低运行速度。...
  • 在学习数字信号处理时遇到需要进行高点数的循环...%然后对hn进行处理获得其循环矩阵hn_f %最后将hn_f与xn相乘获得yn %YSC 2021.1.7 数字信号处理 x1 = length(hn); %先获得hn与xn的长度值 x2 = length(xn); hn(x1+
  • 最近用matlab编程时发现这样一个问题: 比如我想用X(k)=[1 2 3;4 5 6;7 8 9],B=[3 2 1;6 5 4; 9 8 7] 完成 X(k)=X(k-...】,就是三维矩阵。 图片演示一下就很直观了: 1、首先在matlab的命令行中输入 zeros(3,4,.
  • matlab中的for循环

    2021-04-18 16:04:55
    以一个指定的次数重复执行语句语法for variable = expressionstatementsend描述一般的格式是:for variable = expressionstatement...statementend当下面的语句,直到结束,被执行的时候,表达式的列一次性地存储在...
  • MATLAB:创建一个矩阵,大小为12,并对矩阵赋值,每行都是1到12;用matlab自带的sum函数对矩阵列求和、行求和、总和。 1、两个for循环: a=zeros(12); [i,j]=size(a); for i=1:12; for j=1:12; a(i,j)=i,j end end 一...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,388
精华内容 1,755
关键字:

matlabfor循环给矩阵赋值

matlab 订阅