Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2008-12-17
年龄: 43
帖子: 3
声望力: 0 ![]() |
![]()
我有一段matlab code如下
clear; X=[1 2 3 4; 5 6 7 8 ;9 10 11 12]; N=[1 2 3 4; 5 6 7 8 ;9 10 11 12]; N=kron(N,ones(size(X,1),1)); w =[1 1 1 1;1 1 1 1;1 1 1 1]; for i=1:3 for j=1:4 b(i,j)=sqrt(w(i,j)*(N(i,j)-X(i,j))^2); end end c=sum(b,2); [val ind]=min(c) result val =0 ind =1 程序中w及X值是固定的,但是N值会变第一次N=[1 2 3 4]去跟X中的每一个对应位置相减,接下来依序为[5 6 7 8]、[9 10 11 12]我目前仅能算第一次N=[1 2 3 4]跑出一次结果显示值及其索引值,但是后面必须用手动方式修正,想请问有办法让他自动跑出三个答案吗? 如果可以储存每一次的数值(val)及索引(ind)值更好。非常感谢!! |
![]() |
![]() |
![]() |
#2 | |
普通会员
注册日期: 2008-04-12
年龄: 46
帖子: 67
声望力: 19 ![]() |
![]() 引用:
clear; clc; X=[1 2 3 4; 5 6 7 8 ;9 10 11 12]; W =[1 1 1 1;1 1 1 1;1 1 1 1]; N=[1 2 3 4; 5 6 7 8 ;9 10 11 12]; N=kron(N,ones(size(X,1),1)); [ X_row, tmp_col ] = size( X ); %% tmp_col临时量,没用 [ N_row, tmp_col ] = size( N ); result_num = N_row / X_row; %% 确定要做几次结果出来 for i = 1 : result_num %% X大小是一定的,因此这里要做的其实就是正确的分离出大小合适的N来 %% X, N列总是一致的,因此只需要在行上做文章, %% 第一次,需要取出N的1->X_row行, %% 第二次,取出N的X_row+1 -> 2*X_row %% 第三次,取出N的2*X_row+1 -> 3*X_row %% .....一次类推,得到下面: N_sub = N( (i-1)*X_row+1 : i*X_row, : ); B = sqrt( W .* ( N_sub - X ) .^ 2 ); [ Val(i), Indx(i) ] = min( sum( B, 2 ) ); end |
|
![]() |
![]() |
![]() |
#3 |
初级会员
注册日期: 2008-12-17
年龄: 43
帖子: 3
声望力: 0 ![]() |
![]()
可以再请问一下我如果要取出排名前3个4个…到n个最小值及索引可以吗?我有试过sort指令,去sort B矩阵然后用val(1:3),Indx(1:3)取出排名前三的值及索引,但是好像还是不行,可以在请问一下吗?真的非常感谢您!!
|
![]() |
![]() |
![]() |
主题工具 | |
显示模式 | |
|
|
![]() |
||||
主题 | 主题作者 | 版面 | 回复 | 最后发表 |
[求助]??? Undefined command/function 'Signal'. | sogno | MATLAB论坛 | 1 | 2009-04-20 15:20 |
[求助]新手提问,请多多关照 | MondaSunny | MATLAB论坛 | 0 | 2009-03-27 10:22 |
[求助]导入excel中的数据 | wangwendie | MATLAB论坛 | 0 | 2009-02-25 11:05 |
[资料]ANSYS5.7线性和非线性结构静力分析指南 | windows251 | ANSYS论坛 | 10 | 2008-12-30 10:41 |
【求助】simulink串口传输 | liuxing | MATLAB论坛 | 0 | 2008-04-03 14:37 |