作业帮 > 综合 > 作业

matlab菜鸟级问题.求会matlab的.

来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/07/01 06:36:33
matlab菜鸟级问题.求会matlab的.
要把一个
A=4
5
6
7
8
变成 b=1 2
3 4
5 6
7 8
如果数字很多,不止这8个.该怎么用reshape?
[r,c]=size (a)
reshape(a,r/2,2)
为何出error啊.
抱歉.各种菜鸟.
matlab菜鸟级问题.求会matlab的.
A = [1:8]'
A =
1
2
3
4
5
6
7
8
>> b = reshape(A,2,4)'
b =
1 2
3 4
5 6
7 8
上面是过程,需要注意的是,matlab里面矩阵元素在内存中是按列排的,而你要的b是1~8按行排的4*2的矩阵,那么就只能先把Areshape成2*4的矩阵,然后再转置,才能够得到想要b.
如果数字很多,也类似做.
比如:
>> A=[1:10]'
A =
1
2
3
4
5
6
7
8
9
10
>> r = size(A,1)
r =
10
>> b = reshape(A,2,r/2)'
b =
1 2
3 4
5 6
7 8
9 10
注意得到r的时候必须用size(A,1),也就是得到A的第一维的size,即A的行数!这才是A数组的大小.实际上,size(A)=[10,1].
再问: Error using ==> reshape Size arguments must be real integers. Error in ==> reshape at 11 b = reshape(a,6,r/6)' 哦。。我的r是4999.。。能否在不是6的倍数的时候,最后补上几个0? 这又该如何编写呢。。。有劳大神。。。。
再答: 这个,你得先给A补上几个0。 比如 A=[1:4999]'; r=size(A,1); x = 6-mod(r,6); A(r+1:r+x)=0; b = reshape(A,6,(r+x)/6); 这样就好了。
再问: 不好意思 我又来追问了!! 我会加分的!! tangram_guid_1359781738334? Error using ==> reshape To RESHAPE the number of elements must not change. Error in ==> reshape at 13 b = reshape(wind1,6,(r+x)/6); 为何又error了。。。呜呜
再答: 你的error是出在一个程序内部的某一步吧,能把代码贴出来么?
再问: clc; close all; file_in = 'daily_average_wind_speed.xls'; file_out = '6h_average_wind_speed.xls'; wind1=a(:,2); r = size(wind1,1); x = 6-mod(r,6); A(r+1:r+x)=0; b = reshape(wind1,6,(r+x)/6); 有劳了!!