Re: [問題] 矩陣的加法?已回收

看板MATLAB作者 (失ゎれた彩畫)時間15年前 (2010/09/08 17:22), 編輯推噓2(201)
留言3則, 2人參與, 最新討論串3/3 (看更多)
※ 引述《laechan (小太保)》之銘言: : ※ 引述《sqrt1089 (李崩子)》之銘言: : : 以爬文 : : 題目是: : : A=[1 2 3 4 5 6 7 8 9] %1個1*9的矩陣 : : a=A(1,1) %抓A1-1位置 : : 然後中間假設我算出一個B矩陣=[0 9 8 3 4 5 6 8 7] 也是一個1*9(這是假設的) : : 那我現在想要得出 c=[1 9 8 3 4 5 6 8 7]就是把B矩陣第一個位置加入a : : 我作法是: : : c=a+B; : : 結果是c=[1 10 9 4 5 6 7 9 8] : : 但是他會全部都+1... : : 但是我只要第一個+1就好 : : 我的想法是如果把a可以變成a=[1 0 0 0 0 0 0 0 0] : : 就可以了,但是不會指令讓 a=[1 0 0 0 0 0 0 0 0] : : 感謝大大幫忙了~ : 假設未知 B 的長度 : A = [1 2 3 4 5 6 7 8 9]; : B = [0 9 8 3 4 5 6 8 7]; % 中間計算產生的 : a = A(1,1); % 看你這時要讓 a 等於什麼, 這裡以你舉的 1,1為例 : la = length(a); % 跟著計算 a 的長度 : c = B; % 因為 c 跟 B 很像 : c(1,1:la) = a + B(1,1:la); % 讓 c 的前幾個為 a + B前幾個 的和 : 這樣的寫法,不管你 a 得到什麼,或產生的 B 矩陣長度是 : 多少,都可以算,A B 也會是原先的 A B。 提供一個使用logical array的版本 clear all;clc A = [1 2 3 4 5 6 7 8 9]; B = [0 9 8 3 4 5 6 8 7]; C=B; L=false(1,length(B)); %建立一個維度和B相同的logical array L(1)=1; %並讓第一個元素為true 因此 %此例中 L=[1 0 0 0 0 0 0 0 0] C(L)=B(L)+A(L); %讓C中符合L的項次為B及A中相同位置之元素和 執行結果: C = 1 9 8 3 4 5 6 8 7 使用這個方式的好處為 若目的改為非僅只要第一元素相加 只需要跟著改變L中1的位置即可 如果L中1的數目不止一個 則會讓對應位置的元素相加 另外A與B之長度若有不同 也可以運算 但是限制是 L中1的位置不能超過較短矩陣的長度 -- 時の放浪者 (Toki no Hourousha) ----"FF6 Tina's Theme" 遙か遠く 夜を越えて 砂漠の海を 彷徨う 神の聲は 蜃氣樓 忘れられた人々 影は白く 搖らめきたつ 今ひとたびの 幻 蒼く燃える 勇者の夢 永遠に眠る人々 遙か遠く 夜を越えて‧‧‧ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.82.2

09/09 17:35, , 1F
推! 使用matlab的語法好過使用程式的語法^^b
09/09 17:35, 1F

09/09 18:26, , 2F
我也推!主要有印出[1 0 0 0]那個,上面的做法我也推!就
09/09 18:26, 2F

09/09 18:26, , 3F
感謝高手相助!
09/09 18:26, 3F
文章代碼(AID): #1CXrM_CO (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #1CXrM_CO (MATLAB)