哎matlab中如何把一组matlab 数据存入矩阵另外一个数组或者矩阵中

查看: 15388|回复: 12|关注: 0
matlab里如何实现每循环一次就把结果保存到一个新矩阵里?
<h1 style="color:# 麦片财富积分
新手, 积分 10, 距离下一级还需 40 积分
每次循环产生一个一维的矩阵,希望把每次循环产生的结果依次写入一个新矩阵中,一次结果占一行。怎样创建新矩阵?怎么实现新结果不会覆盖原来的?我是初学者,求大神指教~
论坛优秀回答者
关注者: 259
a = zeros(10,5);
for i = 1:10
& & a(i,:) = ...
论坛优秀回答者
帖子最佳答案
关注者: 628
你的问题就是如何产生名字随循环动态变化的数组,这个是可以实现的。但不建议这么做,尤其是循环次数非常大时,因为你将会开辟很多个变量。
推荐的做法是:
1. 如果每次循环产生等长的行向量,就把每次产生的行向量作为矩阵的一行,行标就是当前循环数
2. 如果每次循环产生的向量不等长,就把每次产生的行向量作为cell数组的一个元素,下标就是当前循环数
<h1 style="color:# 麦片财富积分
winner245 发表于
你的问题就是如何产生名字随循环动态变化的数组,这个是可以实现的。但不建议这么做,尤其是循环次数非常大 ...
你好,我每次产生的是等长的数据,就按你说的尝试。另外关于保存这个问题,我写了一行代码老出错,不知道什么原因,代码是:
& & save ( strcat(newname,'\','test_',x(k)),‘DATA’);
<h1 style="color:# 麦片财富积分
kaaaf123 发表于
a = zeros(10,5);
for i = 1:10
谢谢你的回答~尝试一下~
<h1 style="color:# 麦片财富积分
关注者: 1
顶2楼:victory:;3楼装B。
论坛优秀回答者
关注者: 259
顶2楼;3楼装B。
首先谢谢你对我的支持。不过请不要无故言语攻击其他人。
3L说的很好,我完全支持。
<h1 style="color:# 麦片财富积分
你的问题就是如何产生名字随循环动态变化的数组,这个是可以实现的。但不建议这么做,尤其是循环次数非常大 ...
2. 如果每次循环产生的向量不等长,就把每次产生的行向量作为cell数组的一个元素,下标就是当前循环数
这个怎么做啊?
O(∩_∩)O谢谢
论坛优秀回答者
帖子最佳答案
关注者: 628
2. 如果每次循环产生的向量不等长,就把每次产生的行向量作为cell数组的一个元素,下标就是当前循 ...
&& web(fullfile(docroot, 'matlab/matlab_prog/string-evaluation.html'))
打开后第一个例子就是关于cell的
<h1 style="color:# 麦片财富积分
你好,请问这个问题怎么解决
站长推荐 /2
利用MATLAB/Simulink开发智能机器人系统
MATLAB中文论坛是全球最大的 MATLAB & Simulink 中文社区。用户免费注册会员后,即可下载代码,讨论问题,请教资深用户及结识书籍作者。立即注册加入我们吧!
MATLAB官方社交平台
MATLAB中文论坛微社区查看: 9074|回复: 3|关注: 0
怎么把matlab元胞数组中的一部分赋值给另外一个数组?
<h1 style="color:# 麦片财富积分
新手, 积分 14, 距离下一级还需 36 积分
元胞数组a,双精度浮点数矩阵b(n,3),现在想把a中的第2、3、4列(内容都是浮点数)赋值给b,操作如下:
b(:,:)=a{:,2:3};
可是老是出错,为什么啊?
论坛优秀回答者
帖子最佳答案
关注者: 227
a = {[1] [2] [3] [4]}
b = rand(1,3)
b(:,:) = cell2mat(a(:,2:4))
<h1 style="color:# 麦片财富积分
谢谢楼上:D
<h1 style="color:# 麦片财富积分
同求解。。。
站长推荐 /2
利用MATLAB/Simulink开发智能机器人系统
MATLAB中文论坛是全球最大的 MATLAB & Simulink 中文社区。用户免费注册会员后,即可下载代码,讨论问题,请教资深用户及结识书籍作者。立即注册加入我们吧!
MATLAB官方社交平台
MATLAB中文论坛微社区1.Matlab中数组元素引用有三种方法
1.下标法(subscripts)
2.索引法(index)
3.布尔法(Boolean)
注意:在使用这三种方法之前,大家头脑一定要清晰的记住,Matlab中数组元素是按列存储(与Fortran一样),比如说下面的二维数组
Matlab的存储顺序是8,3,4,1,5,9,6,7,2,也就是说先行后列,对于3维数组呢,就是先行后列再页对应个元素的索引和下标分别为
Element Index Subscripts
  从上面的例子中已经很清晰的说明了下标和索引的区别了,也就是说Matlab为每个元素分配了一个唯一识别的ID(即index)
2.下标法引用A(ii,jj):其中ii和jj可以是一维向量、标量、&:&号或者&end&大家对下标估计比较熟悉,由于在C语言中接触过,但是我这里需要强调的是,Matlab的下标是可以多行多列同时引用的,而像C语言等一次只能引用一个,比如
A(2:3,3:-1:1)表示引用数组中的2~3行,3~1列对应的元素
A(:,end)表示引用最后一列元素,&:&表示所有列或行,&end&表示最后一列或列,&end-n&表示倒数第n行或列
A(1,end-1)表示引用第1行倒数第2个元素
A([2 1 3 3],[1 1 2 2 1])表示引用按两个向量引用指定的元素,即A中的第2,1,3,3行和第1,1,2,2,1列对应的元素
举几个例子:
&&A=magic(3)
&&A(2:3,3:-1:1)
&&A(:,end)
&&A(1,end-1)
&&A([2 1 3 3],[1 1 2 2 1])
2.索引法引用(说白了索引就是存储顺序)A(index):index可以是任意的数组,index的元素必须是正整数,且不大于numel(A),返回的是一个尺寸与index一样的数组下标和索引之间可以通过ind2sub和sub2ind函数相互转换,具体可以看帮助,很简单[I,J] = ind2sub(siz,IND)IND = sub2ind(siz,I,J)还有使用A(:)就可以将数组A转换为列向量A(8):表示引用A的第8个元素B=A([1 10 5 2 2 1 3]):表示依次引用A的第1,10,5,2,2,1,3个元素,返回与index尺寸相同的数组,也就是说size(B)=size(index)A([2 5 9;1 1 1;8 5 6]):返回的时侯是一个3*3的矩阵
&&A=magic(5)%括号中为索引值
&&A([1 10 5 2 2 1 3])
&&A([2 5 9;1 1 1;8 5 6])
3.布尔法引用A(X):X是一个有0和1组成布尔型数据,且size(A)=size(X),对应位置为1则留下该数据,0则去掉,最后按A中的存储顺序,返回一个列向量假如说A是3*3的数组A(logical([1 0 0;0 1 0;0 0 1])):表示引用了数组A的对角线元素,注意必须使用logical将0/1数组转换为布尔型
&&A=magic(3)%生成一个3*3的数组
&&x=logical([1 1 0;0 1 1;1 0 1])%将double转化为boolean型数据
&&A(x)%引用对应位置为1的数据,返回列向量
&&x=A&5%是有了比较语句,返回布尔型数据,对应位置数据大于5的为1,否则为0
&&A(x)%返回大于A中大于5的元素,其实该命令可以一次性执行A(A&5)或者find(A&5),前者返回具体元素,后者返回大于5的数据的索引值
&&A(A&5)%一次性执行上面的命令
&&indx=find(A&5)%查找A中对于5的元素,返回它们的索引(index)值,此时我们可以通过A(index)返回具体的元素
阅读(...) 评论()

我要回帖

更多关于 matlab循环存入数组 的文章

 

随机推荐